首頁  >  文章  >  資料庫  >  oracle中有回滾嗎

oracle中有回滾嗎

WBOY
WBOY原創
2022-06-08 17:10:354190瀏覽

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影片教學

以上是oracle中有回滾嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn