MySQL - RELEASE SAVEPOINT 语句
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/mysql8/MySQL Server 8.0/Uploads/data.csv" into table employee FIELDS TERMINATED BY ',' LINES TERMINATED BY ' '; load xml infile "C:/ProgramData/mysql8/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