oracle中有回滾,回滾用于撤銷當前事務或者有問題的事務,利用rollback方法即可完成事務的回滾,語法為“ROLLBACK [隱式關鍵字] [TO [SAVEPOINT] savepoint_name | FORCE ‘string’};”。
本教程操作環境:windows10系統、Oracle 12c版、Dell G3電腦。
oracle中有回滾嗎
一、概念
在 Oracle 中,rollback 用法與 commit 相反,是用來 撤銷 當前事務或有問題的事務。
1.1 語法
ROLLBACK?[WORK]?[TO?[SAVEPOINT]?savepoint_name?|?FORCE?'string'};
例如:
-
work – 可選。隱式關鍵字,可寫可不寫。
-
to savepoint savepoint_name – 可選。rollback 語句撤銷當前會話的全部更改,直到由 savepoint_name 指定的保存點。若是省略該子句,則全部更改都將被撤銷。
-
force ‘string – 可選’。用于 強制回滾 可能已損壞或有問題的事務。使用此子句,能夠將單引號中的 事務id 指定為 字符串。能夠在 系統視圖 中找到名為 dba_2pc_pengding、v$corrupt_xid_list 的事務標識(沒法將有問題的事務回滾到保存點。)
1.1 數據準備
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,?'小優子'); ???SAVEPOINT?ps2;?--?若也是?ps1,則回滾至此處(最近) ??? ???INSERT?INTO?stu(s_id,?s_xm)?VALUES(2,?'小優子'); ??? ???COMMIT; EXCEPTION? ??WHEN?OTHERS?THEN ?????ROLLBACK?TO?ps1; ?????dbms_output.put_line(SQLCODE?||'?:?'||SQLERRM); ?????dbms_output.put_line(dbms_utility.format_error_backtrace); END;
運行結果:
推薦教程:《Oracle視頻教程》
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦