MySQL的SQL語句 -事務性語句和鎖定語句(3)- SAVEPOINT

SAVEPOINT、ROLLBACK TO SAVEPOINT 和 RELEASE SAVEPOINT 語句ide

1. SAVEPOINT identifier
2. ROLLBACK [WORK] TO [SAVEPOINT] identifier
3. RELEASE SAVEPOINT identifier

InnoDB 支持 SQL 語句 SAVEPOINT、ROLLBACK TO SAVEPOINT、RELEASE SAVEPOINT 和用於 ROLLBACK 的可選 WORK 關鍵字。函數

SAVEPOINT 語句設置一個名爲 identifier 的事務保存點。若是當前事務具備同名的保存點,則刪除舊的保存點並設置新的保存點。code

ROLLBACK TO SAVEPOINT 語句將事務回滾到指定的保存點,而不終止該事務。當前事務在設置保存點後對行所作的修改在回滾中被撤消,可是 InnoDB 不會釋放保存點以後存儲在內存中的行鎖。(對於新插入的行,鎖信息由存儲在該行中的事務 ID 攜帶;鎖不單獨存儲在內存中。在這種狀況下,行鎖在撤消時被釋放。)在命名保存點以後設置的保存點將被刪除。事務

若是 ROLLBACK TO SAVEPOINT 語句返回如下錯誤,則表示不存在具備指定名稱的保存點:內存

1.ERROR 1305 (42000): SAVEPOINT identifier does not exist

RELEASE SAVEPOINT 語句從當前事務的保存點集合中刪除命名的保存點。不引起提交或回滾。若是保存點不存在,則爲錯誤。it

若是執行 COMMIT 或 ROLLBACK 而沒有指定保存點,將刪除當前事務的全部保存點。class

當調用存儲函數或激活觸發器時,將建立新的保存點級別。之前級別上的保存點將不可用,所以不會與新級別上的保存點衝突。當函數或觸發器終止時,它建立的全部保存點都將被釋放,並恢復之前的保存點級別。命名

相關文章
相關標籤/搜索