使用保留點
簡單的 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免費視頻教程
4.?mysql免費視頻教程
5.?mysql免費視頻教程