oracle中有回滾,回滾用于撤銷(xiāo)當(dāng)前事務(wù)或者有問(wèn)題的事務(wù),利用rollback方法即可完成事務(wù)的回滾,語(yǔ)法為“ROLLBACK [隱式關(guān)鍵字] [TO [SAVEPOINT] savepoint_name | FORCE 'string'};”。
本教程操作環(huán)境:windows10系統(tǒng)、Oracle 12c版、Dell G3電腦。
oracle中有回滾嗎
一、概念
在 Oracle 中,rollback 用法與 commit 相反,是用來(lái) 撤銷(xiāo) 當(dāng)前事務(wù)或有問(wèn)題的事務(wù)。
1.1 語(yǔ)法
ROLLBACK [WORK] [TO [SAVEPOINT] savepoint_name | FORCE 'string'};
例如:
-
work – 可選。隱式關(guān)鍵字,可寫(xiě)可不寫(xiě)。
-
to savepoint savepoint_name – 可選。rollback 語(yǔ)句撤銷(xiāo)當(dāng)前會(huì)話的全部更改,直到由 savepoint_name 指定的保存點(diǎn)。若是省略該子句,則全部更改都將被撤銷(xiāo)。
-
force 'string – 可選'。用于 強(qiáng)制回滾 可能已損壞或有問(wèn)題的事務(wù)。使用此子句,能夠?qū)我?hào)中的 事務(wù)id 指定為 字符串。能夠在 系統(tǒng)視圖 中找到名為 dba_2pc_pengding、v$corrupt_xid_list 的事務(wù)標(biāo)識(shí)(沒(méi)法將有問(wèn)題的事務(wù)回滾到保存點(diǎn)。)
1.1 數(shù)據(jù)準(zhǔn)備
DROP TABLE stu; -- if exists CREATE TABLE stu ( s_id NUMBER, s_xm VARCHAR2(30) ); ALTER TABLE stu ADD CONSTRAINTS pk_stu_id PRIMARY KEY(s_id);
二、savepoint
回滾到 最近 的 pointsql
DECLARE BEGIN INSERT INTO stu(s_id, s_xm) VALUES(1, '小游子'); SAVEPOINT ps1; INSERT INTO stu(s_id, s_xm) VALUES(2, '小優(yōu)子'); SAVEPOINT ps2; -- 若也是 ps1,則回滾至此處(最近) INSERT INTO stu(s_id, s_xm) VALUES(2, '小優(yōu)子'); COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK TO ps1; dbms_output.put_line(SQLCODE ||' : '||SQLERRM); dbms_output.put_line(dbms_utility.format_error_backtrace); END;
運(yùn)行結(jié)果:
推薦教程:《Oracle視頻教程》