Rumah > pangkalan data > Oracle > teks badan

Adakah terdapat rollback dalam oracle?

WBOY
Lepaskan: 2022-06-08 17:10:35
asal
4187 orang telah melayarinya

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'};
Salin selepas log masuk

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);
Salin selepas log masuk

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;
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan