oracle中有回滾嗎

oracle中有回滾,回滾用于撤銷當前事務或者有問題的事務,利用rollback方法即可完成事務的回滾,語法為“ROLLBACK [隱式關鍵字] [TO [SAVEPOINT] savepoint_name | FORCE ‘string’};”。

oracle中有回滾嗎

本教程操作環境: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中有回滾嗎

推薦教程:《Oracle視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享