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
廣告