使用保留點
簡單的 ROLLBACK 和 COMMIT 語句就可以寫入或撤銷整個交易處理。但是,只是對簡單的事務處理才能這樣做,更複雜的事務處理可能需要部分提交或回退。
例如,前面描述的新增訂單的過程為一個事務處理。如果發生錯誤,只需要返回新增 orders 行之前即可,不需要回退到 customers 表(如果存在的話)。
為了支援回退部分交易處理,必須能在交易處理區塊中適當的位置放置佔位符。這樣,如果需要回退,可以回退到某個佔位符。
這些佔位符稱為保留點。為了建立佔位符,可如下使用SAVEPOINT語句:
輸入:
savepoint deletel;
每個保留點都取標識它的唯一名字,以便在回退時,MySQL知道要回退到何處。為了回退到本例給出的保留點,可如下進行:
輸入:
rollback to deletel;
#保留點越多越好可以在MySQL程式碼中設定任意多的保留點,越多越好。為什麼呢?因為保留點越多,你就越能按自己的意願靈活地進行回退。
釋放保留點 保留點在交易處理完成(執行一條 ROLLBACK 或COMMIT )後自動釋放。自MySQL 5以來,也可以用 RELEASESAVEPOINT 明確地釋放保留點。
更改預設的提交行為
如所述,預設的MySQL行為是自動提交所有更改。換句話說,任何時候你執行一條MySQL語句,該語句其實都是針對表格執行的,而且所做的變更立即生效。為指示MySQL不自動提交更改,需要使用以下語句:
輸入:
set autocommit = 0;
分析:autocommit 標誌決定是否自動提交更改,不管有沒有 COMMIT語句。設定 autocommit 為 0 (假)指示MySQL不自動提交變更(直到 autocommit 被設定為真為止)。
標誌為連接專用 autocommit 標誌是針對每個連線而不是伺服器的。
【相關推薦】
1. mysql免費視訊教學
2. MySQL事務-ROLLBACK,COMMIT用法詳解
4. MySQL UPDATE觸發器(更新)與觸發器深度解析
以上是MySQL事務-使用保留點、更改預設的提交行為詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!