Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Criar tabela oracle com confirmação automática ativada


É possível usando uma Transação Autônoma.
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));

Em seguida, execute este PL/SQL anônimo. Observe com atenção, o procedimento local upd_table_3 não é executado quando é declarado. É executado quando chamado dentro do BEGIN principal quadra:
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;
/

O procedimento deve falhar intencionalmente na 4ª inserção com ORA-02291 . Eu fiz assim. Então
ROLLBACK;

Todas as tabelas devem ser revertidas, exceto t3 , que fizemos a inserção em uma transação autônoma.
SELECT * FROM t1;

no rows selected

SELECT * FROM t2;

no rows selected

SELECT * FROM t3;

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

SELECT * FROM t4;

no rows selected