W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
?SAVEPOINT
?語(yǔ)句用來(lái)實(shí)現(xiàn)事務(wù)的部分回滾。
SAVEPOINT
?:SAVEPOINT spname
SAVEPOINT
?:ROLLBACK [WORK] to [SAVEPOINT] spname
參數(shù) |
描述 |
---|---|
spname |
指定 |
假設(shè)一個(gè)事務(wù)執(zhí)行了如下語(yǔ)句:
sql_no |
語(yǔ)句 |
分區(qū) |
---|---|---|
1 |
update... |
p1, p4 |
savepoint sp1 |
||
2 |
update... |
p2, p4 |
3 |
update... |
p3, p5 |
savepoint sp2 |
||
4 |
update... |
p1, p3, p6 |
5 |
update... |
p1, p5 |
savepoint sp3 |
||
6 |
select... |
|
7 |
update... |
p5, p6 |
savepoint sp4 |
用戶(hù)在提交事務(wù)之前可以創(chuàng)建?SAVEPOINT
?,需要根據(jù)?SAVEPOINT
?創(chuàng)建的順序,將事務(wù)的?SAVEPOINT
?串成鏈表。以上事務(wù)包含了 7 條 SQL 和 4 個(gè)?SAVEPOINT
?,記錄?SAVEPOINT
?的鏈表如下圖所示,其中每個(gè)節(jié)點(diǎn)記錄了?<spname, sql_no>
?的映射關(guān)系:
事務(wù)為了支持回滾某條 SQL 之后的所有修改,需要將每條語(yǔ)句涉及的參與者以及對(duì)應(yīng)的 ?sql_no
? 記錄下來(lái),以上事務(wù)執(zhí)行了 7 條 SQL,涉及 p1~p6 共 6 個(gè)分區(qū):
SAVEPOINT
?鏈表查詢(xún)?spname
?對(duì)應(yīng)的?sql_no
?假設(shè)用戶(hù)執(zhí)行?ROLLBACK to SAVEPOINT sp2
?,根據(jù)savepoint鏈表查詢(xún)到 sp2 對(duì)應(yīng)的?sql_no
?為 3。sql_no
?對(duì)應(yīng)的分區(qū)根據(jù)事務(wù)參與者列表查詢(xún)到?sql_no
?大于 3 的語(yǔ)句操作的分區(qū)涉及 p1、p3、p5、p6。sql_no
?大于 3 的操作信息從事務(wù)參與者列表中刪除,由于 p6上的所有修改都被回滾掉,因此 p6 可以從參與者列表中刪除。
ROLLBACK to SAVEPOINT sp2
?成功后,系統(tǒng)會(huì)刪除 sp3 和 sp4 的SAVEPOINT,不允許再回滾到 sp3 和 sp4。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: