MySQL - 释放保存点语句



RELEASE SAVEPOINT 语句

保存点是在事务中一个逻辑回滚点。当您设置保存点时,无论何时在保存点之后发生错误,您都可以使用回滚撤消您在保存点之前所做的操作。

MySQL InnoDB 支持 SAVEPOINT、ROLLBACK TO SAVEPOINT 和 RELEASE SAVEPOINT 语句。

RELEASE SAVEPOINT 语句删除指定的保存点。删除保存点后,您无法提交或回滚到该保存点。如果指定的保存点不存在,则会生成错误。

如果您调用 COMMIT 或 ROLLBACK 语句而不指定保存点的名称,则当前事务的所有保存点都将被删除。

语法

以下是 MySQL RELEASE SAVEPOINT 语句的语法:

RELEASE SAVEPOINT identifier

示例

假设我们使用 CREATE 语句创建了一个表,如下所示:

CREATE TABLE EMPLOYEE(
   FIRST_NAME VARCHAR(20),
   LAST_NAME VARCHAR(20),
   AGE INT,
   INCOME INT
);

如果我们有一个 .csv 文件和一个 .xml 文件,其内容如下

data.xml -

<rowgt;
   <FIRST_NAMEgt;Javed</FIRST_NAMEgt;
   <LAST_NAMEgt;Syed</LAST_NAMEgt;
   <AGEgt;25</AGEgt;
   <INCOMEgt;9855</INCOMEgt;
</rowgt;
<rowgt;
   <FIRST_NAMEgt;Abhinav</FIRST_NAMEgt; 
   <LAST_NAMEgt;Gomatam</LAST_NAMEgt;
   <AGEgt;30</AGEgt;
   <INCOMEgt;7000</INCOMEgt;
</rowgt;

data.csv -

'Krishna','Sharma',19,2000
'Raj','Kandukuri',20,7000

以下 MySQL 事务尝试将这些文件的内容插入到表中:

START TRANSACTION;
SAVEPOINT mysavepoint;
LOAD DATA INFILE "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/data.csv" 
into table employee
   FIELDS TERMINATED BY ','
   LINES TERMINATED BY '\n';

load xml infile "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/data.xml" 
into table employee ROWS IDENTIFIED BY '<row>';
RELEASE SAVEPOINT mysavepoint;

如果您验证上述表的内容,您可以观察到所有插入的记录,如下所示:

SELECT * FROM EMPLOYEE;

输出

以下是上述程序的输出:

FIRST_NAME LAST_NAME AGE INCOME
'Krishna' 'Sharma' 19 2000
'Raj' 'Kandukuri' 20 7000
Javed Syed 25 9855
Abhinav Gomatam 30 7000

由于我们已经释放了保存点,如果您尝试回滚,您将收到错误:

ROLLBACK TO SAVEPOINT mysavepoint;
ERROR 1305 (42000): SAVEPOINT mysavepoint does not exist
广告

© . All rights reserved.