13.4.4.SAVEPOINT和ROLLBACKTOSAVEPOINT語法
13.4.4. SAVEPOINT和ROLLBACK
TO SAVEPOINT語法
SAVEPOINT identifier
ROLLBACK [WORK] TO SAVEPOINT identifier
RELEASE SAVEPOINT identifier
InnoDB支持SQL語句SAVEPOINT, ROLLBACK TO SAVEPOINT, RELEASE SAVEPOINT和自選的用于ROLLBACK的WORK關鍵詞。
SAVEPOINT語句用于設置一個事務保存點,帶一個標識符名稱。如果當前事務有一個同樣名稱的保存點,則舊的保存點被刪除,新的保存點被設置。
ROLLBACK TO SAVEPOINT語句會向以命名的保存點回滾一個事務。如果在保存點被設置后,當前事務對行進行了更改,則這些更改會在 回滾中被撤銷。但是,InnoDB不會釋放被存儲在保存點之后的存儲器中的行鎖定。(注意,對于新插入的行,鎖定信息被存儲在行中的事務ID承載;鎖定沒有被分開存儲在存儲器中。在這種情況下,行鎖定在撤銷中被釋放。)在被命名的保存點之后設置的保存點被刪除。
如果語句返回以下錯誤,則意味著不存在帶有指定名稱的保存點:
ERROR 1181: Got error 153 during ROLLBACK
RELEASE SAVEPOINT語句會從當前事務的一組保存點中刪除已命名的保存點。不出現提交或 回滾。如果保存點不存在,會出現錯誤。
如果您執行COMMIT或執行不能命名保存點的ROLLBACK,則當前事務的所有保存點被刪除。