Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk berguling kembali dalam oracle

Bagaimana untuk berguling kembali dalam oracle

下次还敢
下次还敢asal
2024-04-19 03:27:17427semak imbas

Operasi rollback dalam Oracle boleh membuat asal perubahan dalam urus niaga tanpa komitmen dan memulihkan pangkalan data kepada keadaan sebelum transaksi dimulakan. Terdapat dua kaedah pemulangan semula: secara eksplisit melancarkan semula urus niaga semasa menggunakan penyata ROLLBACK, atau secara automatik melancarkan semula urus niaga apabila ralat berlaku melalui pengendalian pengecualian. Rollback hanya boleh membuat asal perubahan dalam urus niaga yang tidak komited dan amalan terbaik adalah menggunakan pengendalian pengecualian untuk mengendalikan ralat dalam urus niaga untuk memastikan transaksi itu digulung semula dengan betul apabila ralat berlaku. . Transaksi ialah satu set operasi pangkalan data berturut-turut yang sama ada semuanya berjaya atau semuanya gagal. Jika mana-mana operasi dalam urus niaga gagal, keseluruhan urus niaga digulingkan semula, memulihkan pangkalan data kepada keadaan sebelum transaksi bermula.

Cara untuk melancarkan transaksi OracleBagaimana untuk berguling kembali dalam oracle

Terdapat dua cara untuk melancarkan transaksi dalam Oracle:

Menggunakan pernyataan ROLLBACK:

Penyata ROLLBACK digunakan untuk melancarkan transaksi semasa secara eksplisit. Ia akan membuat asal semua perubahan yang dilakukan dalam transaksi.

<code class="sql">ROLLBACK;</code>

Pengendalian Pengecualian:

Pengendalian Pengecualian boleh digunakan untuk melancarkan transaksi secara automatik selepas ralat berlaku. Oracle membuang pengecualian apabila ralat berlaku dalam transaksi. Jika pengecualian tidak dikendalikan, urus niaga akan digulung semula secara automatik.
  • Contoh
    Contoh berikut menunjukkan cara untuk melancarkan urus niaga Oracle menggunakan penyata ROLLBACK:
  • <code class="sql">BEGIN
      -- 开始一个事务
      START TRANSACTION;
    
      -- 执行一些更新
      UPDATE employees SET salary = salary * 1.10
      WHERE department_id = 10;
    
      -- 发生错误
      UPDATE employees SET salary = salary * -1 -- 错误:负数工资
      WHERE department_id = 20;
    
      -- 回滚事务
      ROLLBACK;
    END;</code>
    Dalam contoh di atas, penyata KEMASKINI yang pertama berjaya dilaksanakan, tetapi penyata KEMASKINI kedua gagal disebabkan oleh gaji negatif kesilapan. Penyata ROLLBACK melancarkan semula keseluruhan transaksi, membuat asal semua perubahan daripada kedua-dua penyata KEMASKINI.
Nota

Timbal balik hanya boleh membuat asal perubahan dalam transaksi yang dilakukan. Urus niaga yang komited tidak boleh ditarik balik.

Jika ralat berlaku semasa pemulangan urus niaga, Oracle akan melancarkan urus niaga tetapi tidak akan membuang pengecualian.

Amalan terbaik adalah menggunakan pengendalian pengecualian untuk mengendalikan ralat dalam urus niaga untuk memastikan transaksi itu digulung semula dengan betul apabila ralat berlaku.

Atas ialah kandungan terperinci Bagaimana untuk berguling kembali 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