sql >> Databáze >  >> RDS >> Oracle

Vytvořte tabulku Oracle se zapnutým automatickým potvrzením

Je to možné pomocí autonomní transakce.

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

Poté spusťte tento anonymní PL/SQL. Podívejte se pozorně na místní proceduru upd_table_3 není spuštěn, když je deklarován. Spustí se při volání v hlavním BEGIN blokovat:

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

Postup by měl selhat úmyslně na 4. vložce s ORA-02291 . Udělal jsem to takhle. Potom

ROLLBACK;

Všechny tabulky by měly být vráceny zpět kromě t3 , kterou jsme vložili do autonomní transakce.

SELECT * FROM t1;

no rows selected

SELECT * FROM t2;

no rows selected

SELECT * FROM t3;

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

SELECT * FROM t4;

no rows selected


  1. java.sql.SQLException:Pole nemá výchozí hodnotu

  2. Jak načíst názvy polí z dočasné tabulky (SQL Server 2008)

  3. Úvod do typů grafů

  4. Indexy a vícesloupcové primární klíče