W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
SAVEPOINT — 在當(dāng)前事務(wù)中定義一個(gè)新的保存點(diǎn)
SAVEPOINT savepoint_name
SAVEPOINT
在當(dāng)前事務(wù)中建立一個(gè)新保存點(diǎn)。
保存點(diǎn)是事務(wù)內(nèi)的一種特殊標(biāo)記,它允許所有在它被建立之后執(zhí)行的命令被 回滾,把該事務(wù)的狀態(tài)恢復(fù)到它處于保存點(diǎn)時(shí)的樣子。
savepoint_name
給新保存點(diǎn)的名字。
使用ROLLBACK TO SAVEPOINT回滾到一個(gè)保存點(diǎn)。 使用RELEASE SAVEPOINT銷毀一個(gè)保存點(diǎn), 但保持在它被建立之后執(zhí)行的命令的效果。
保存點(diǎn)只能在一個(gè)事務(wù)塊內(nèi)建立??梢栽谝粋€(gè)事務(wù)內(nèi)定義多個(gè)保存點(diǎn)。
要建立一個(gè)保存點(diǎn)并且后來撤銷在它建立之后執(zhí)行的所有命令的效果:
BEGIN;
INSERT INTO table1 VALUES (1);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (2);
ROLLBACK TO SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (3);
COMMIT;
上面的事務(wù)將插入值 1 和 3,但不會(huì)插入 2。
要建立并且稍后銷毀一個(gè)保存點(diǎn):
BEGIN;
INSERT INTO table1 VALUES (3);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (4);
RELEASE SAVEPOINT my_savepoint;
COMMIT;
上面的事務(wù)將插入 3 和 4。
當(dāng)建立另一個(gè)同名保存點(diǎn)時(shí),SQL 要求之前的那個(gè)保存點(diǎn)自動(dòng)被銷毀。在 PostgreSQL中,舊的保存點(diǎn)會(huì)被保留,不過在進(jìn)行 回滾或釋放時(shí)只能使用最近的那一個(gè)(用 RELEASE SAVEPOINT
釋放較新的保存點(diǎn)將會(huì) 導(dǎo)致較舊的保存點(diǎn)再次變得可以被 ROLLBACK TO SAVEPOINT
和 RELEASE SAVEPOINT
訪問)。在其他方面,
SAVEPOINT
完全符合 SQL。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: