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

Buat tabel Oracle dengan komit otomatis aktif

Itu mungkin menggunakan Transaksi Otonom.

CREATE TABLE t1 (x INTEGER PRIMARY KEY);
CREATE TABLE t2 (x INTEGER);
CREATE TABLE t3 (x INTEGER);
CREATE TABLE t4 (x INTEGER REFERENCES t1(x));

Kemudian jalankan PL/SQL anonim ini. Perhatikan baik-baik, prosedur lokal upd_table_3 tidak dijalankan saat dideklarasikan. Ini dijalankan saat dipanggil di dalam BEGIN main utama blok:

DECLARE 
  PROCEDURE upd_table_3 IS
  PRAGMA AUTONOMOUS_TRANSACTION;
  BEGIN
    INSERT INTO t3 VALUES (3);
    COMMIT;
  END;
BEGIN
  INSERT INTO t1 VALUES (1);
  INSERT INTO t2 VALUES (2);
  upd_table_3;
  INSERT INTO t4 VALUES (4);
  COMMIT;
END;
/

Prosedur harus sengaja gagal pada sisipan ke-4 dengan ORA-02291 . Saya membuatnya dengan cara ini. Kemudian

ROLLBACK;

Semua tabel harus di-roll back kecuali t3 , yang kami masukkan dalam transaksi otonom.

SELECT * FROM t1;

no rows selected

SELECT * FROM t2;

no rows selected

SELECT * FROM t3;

         X
----------
         3

SELECT * FROM t4;

no rows selected


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak mengerti mengapa SQL saya tidak berfungsi

  2. Cara mengimpor data ke tablespace tertentu

  3. PIVOT Oracle - ubah beberapa data baris menjadi satu baris dengan banyak kolom, tanpa data agregat

  4. Masalah dalam menjalankan Proc - Oracle PL/SQL

  5. Terapkan filter di Oracle View