明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

MySQL事務(wù)-ROLLBACK,COMMIT用法詳細(xì)說(shuō)明

[摘要]使用ROLLBACK既然我們已經(jīng)知道了什么是事務(wù)處理,下面討論事務(wù)處理的管理中所涉及的問(wèn)題。管理事務(wù)處理的關(guān)鍵在于將SQL語(yǔ)句組分解為邏輯塊,并明確規(guī)定數(shù)據(jù)何時(shí)應(yīng)該回退,何時(shí)不應(yīng)該回退。MySQL使用下面的語(yǔ)句來(lái)標(biāo)識(shí)事務(wù)的開(kāi)始:輸入:start transactionMySQL的 ROLLBACK...
使用ROLLBACK

既然我們已經(jīng)知道了什么是事務(wù)處理,下面討論事務(wù)處理的管理中所涉及的問(wèn)題。

管理事務(wù)處理的關(guān)鍵在于將SQL語(yǔ)句組分解為邏輯塊,并明確規(guī)定數(shù)據(jù)何時(shí)應(yīng)該回退,何時(shí)不應(yīng)該回退。

MySQL使用下面的語(yǔ)句來(lái)標(biāo)識(shí)事務(wù)的開(kāi)始:

輸入:

start transaction

MySQL的 ROLLBACK 命令用來(lái)回退(撤銷)MySQL語(yǔ)句,請(qǐng)看下面的語(yǔ)句:

輸入:

select * from ordertotals;
start transaction;
delete from ordertotals;
select * from ordertotals;
rollback;
select * from ordertotals;

分析:這個(gè)例子從顯示 ordertotals 表的內(nèi)容開(kāi)始。首先執(zhí)行一條 SELECT 以顯示該表不為空。然后開(kāi)始一個(gè)事務(wù)處理,用一條 DELETE 語(yǔ)句刪除 ordertotals 中的所有行。另一條SELECT 語(yǔ)句驗(yàn)證 ordertotals 確實(shí)為空。這時(shí)用一條 ROLLBACK 語(yǔ)句回退START TRANSACTION 之后的所有語(yǔ)句,最后一條 SELECT 語(yǔ)句顯示該表不為空。

顯然, ROLLBACK 只能在一個(gè)事務(wù)處理內(nèi)使用(在執(zhí)行一條 START TRANSACTION 命令之后)。

哪些語(yǔ)句可以回退? 事務(wù)處理用來(lái)管理 INSERT 、 UPDATE 和DELETE 語(yǔ)句。你不能回退 SELECT 語(yǔ)句。(這樣做也沒(méi)有什么意義。)你不能回退 CREATE 或 DROP 操作。事務(wù)處理塊中可以使用這兩條語(yǔ)句,但如果你執(zhí)行回退,它們不會(huì)被撤銷。


使用COMMIT

一般的MySQL語(yǔ)句都是直接針對(duì)數(shù)據(jù)庫(kù)表執(zhí)行和編寫(xiě)的。這就是所謂的隱含提交(implicit commit),即提交(寫(xiě)或保存)操作是自動(dòng)進(jìn)行的。但是,在事務(wù)處理塊中,提交不會(huì)隱含地進(jìn)行。為進(jìn)行明確的提交,使用 COMMIT 語(yǔ)句,如下所示:

輸入:

start transaction;
delete from orderitems where order_num = 20010;
delete from orders where order_num = 20010;
commit;

分析:在這個(gè)例子中,從系統(tǒng)中完全刪除訂單 20010 。因?yàn)樯婕案聝蓚(gè)數(shù)據(jù)庫(kù)表 orders 和 orderItems ,所以使用事務(wù)處理塊來(lái)保證訂單不被部分刪除。最后的 COMMIT 語(yǔ)句僅在不出錯(cuò)時(shí)寫(xiě)出更改。如果第一條 DELETE 起作用,但第二條失敗,則 DELETE 不會(huì)提交(實(shí)際上,它是被自動(dòng)撤銷的)。

隱含事務(wù)關(guān)閉 當(dāng) COMMIT 或 ROLLBACK 語(yǔ)句執(zhí)行后,事務(wù)會(huì)自動(dòng)關(guān)閉(將來(lái)的更改會(huì)隱含提交)。

【相關(guān)推薦】

1. mysql免費(fèi)視頻教程

2. MySQL事務(wù)處理實(shí)例講解

3. MySQL UPDATE觸發(fā)器(更新)及觸發(fā)器深度解析

4. MySQL delete觸發(fā)器(刪除)用法詳解

5. MySQL中insert觸發(fā)器(插入)詳解

以上就是MySQL事務(wù)-ROLLBACK,COMMIT用法詳解的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門(mén)到精通的SQL知識(shí)。