Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Menggunakan transaksi bersarang di oracle

Oracle tidak mendukung transaksi bersarang. Jika transaksi berkomitmen, itu berkomitmen. Itulah mengapa Anda biasanya tidak ingin melakukan (atau mengembalikan) transaksi dalam prosedur tersimpan, yang menyulitkan untuk menggunakan kembali prosedur di tempat lain jika semantik transaksi Anda berbeda.

Anda dapat, bagaimanapun, mendeklarasikan savepoint di awal prosedur Anda dan kembalikan ke savepoint itu jika terjadi kesalahan. Jika Anda kemudian menghapus komit, maka transaksi hanya dikendalikan oleh kode aplikasi bukan oleh kode database

begin
  savepoint beginning_of_proc;

  insert/update/delete...

exception 
  when OTHERS then 
    rollback to beginning_of_proc;
    raise;
end;

Namun, dalam hal ini, bias saya adalah tidak memiliki savepoint dalam kode, tidak memiliki rollback, dan tidak menangkap pengecualian kecuali Anda melakukan sesuatu yang berguna dengannya. Lakukan saja DML, biarkan pengecualian apa pun dilemparkan, dan tangani di aplikasi Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghitung jumlah kemunculan karakter di Oracle SQL

  2. Cara mendapatkan objek Koneksi saat ini di Spring JDBC

  3. SIGN() Fungsi di Oracle

  4. Nama pengguna atau peran umum tidak valid

  5. Bagaimana cara menggunakan PBKDF2 di Oracle 12c?