MySQL - SAVEPOINT 语句



MySQL SAVEPOINT 语句

保存点是在事务中一个逻辑回滚点。设置保存点后,如果在保存点之后发生错误,可以使用回滚操作撤销到保存点之前的操作。

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

SAVEPOINT 语句用于为事务设置一个指定名称的保存点。如果已存在具有给定名称的保存点,则旧的保存点将被删除。

语法

以下是 MySQL SAVEPOINT 语句的语法:

SAVEPOINT identifier

示例

MySQL 会在执行每个语句后保存所做的更改。要自动保存更改,请设置 autocommit 选项,如下所示:

SET autocommit=0;

假设我们在 MySQL 中创建了一个名为 EMPLOYEES 的表,如下所示:

CREATE TABLE EMP(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT);

让我们使用 INSERT 语句向其中插入 4 条记录:

INSERT INTO EMP VALUES
('Krishna', 'Sharma', 19, 'M', 2000),
('Raj', 'Kandukuri', 20, 'M', 7000),
('Ramya', 'Ramapriya', 25, 'F', 5000);

以下事务更新 emp 表中所有员工的年龄值:

START TRANSACTION;

SELECT * FROM EMP;
UPDATE EMP SET AGE = AGE + 1;

SAVEPOINT samplesavepoint;

INSERT INTO EMP ('Mac', 'Mohan', 26, 'M', 2000);

ROLLBACK TO SAVEPOINT samplesavepoint;
COMMIT;

如果检索表的內容,您可以看到更新后的值:

SELECT * FROM EMP;

输出

上述查询产生以下输出:

FIRST_NAME LAST_NAME AGE SEX INCOME
Krishna Sharma 20 M 2000
Raj Kandukuri 21 M 7000
Ramya Ramapriya 26 F 5000
广告
© . All rights reserved.