Rumah  >  Artikel  >  pangkalan data  >  Adakah terdapat rollback dalam oracle?

Adakah terdapat rollback dalam oracle?

WBOY
WBOYasal
2022-06-08 17:10:354186semak imbas

Terdapat pemulangan semula dalam Oracle digunakan untuk membuat asal transaksi semasa atau urus niaga yang bermasalah Kaedah pemulangan semula boleh digunakan untuk melengkapkan pemulangan semula urus niaga tersebut ialah "KEMBALIKAN [kata kunci tersirat] [KEPADA [. SAVEPOINT] ] savepoint_name |. PAKSA 'rentetan'};".

Adakah terdapat rollback dalam oracle?

Persekitaran pengendalian tutorial ini: sistem Windows 10, Oracle versi 12c, komputer Dell G3.

Adakah terdapat pemulangan semula dalam Oracle?

1. Konsep

Dalam Oracle, penggunaan pemulangan adalah bertentangan dengan komit, yang digunakan untuk membuat asal transaksi semasa atau Transaksi bermasalah.

1.1 Sintaks

ROLLBACK [WORK] [TO [SAVEPOINT] savepoint_name | FORCE 'string'};

Contohnya:

  • kerja - Pilihan. Kata kunci tersirat boleh ditulis atau tidak.

  • untuk savepoint savepoint_name - Pilihan. Pernyataan rollback membatalkan semua perubahan untuk sesi semasa sehingga savepoint yang ditentukan oleh savepoint_name. Jika klausa ini ditinggalkan, semua perubahan akan dibuat asal.

  • paksa 'rentetan - pilihan'. Digunakan untuk memaksa penarikan balik urus niaga yang mungkin rosak atau bermasalah. Menggunakan klausa ini, anda boleh menentukan id transaksi dalam petikan tunggal sebagai rentetan. Pengecam transaksi bernama dba_2pc_pengding, v$corrupt_xid_list boleh ditemui dalam paparan sistem (tiada cara untuk melancarkan semula transaksi yang bermasalah ke titik simpan.)

1.1 Penyediaan Data

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);

2 Savepoint

Kembali ke pointsql terkini

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;

Hasil operasi:

Adakah terdapat rollback dalam oracle?

Tutorial yang disyorkan: "Tutorial Video Oracle"

Atas ialah kandungan terperinci Adakah terdapat rollback dalam oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn