sql >> Database >  >> RDS >> Oracle

Oracle-tabel maken met automatische vastlegging aan

Het is mogelijk met behulp van een Autonome Transactie.

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

Voer vervolgens deze anonieme PL/SQL uit. Kijk goed naar de lokale procedure upd_table_3 wordt niet uitgevoerd wanneer het is gedeclareerd. Het wordt uitgevoerd wanneer het wordt aangeroepen in het hoofdvenster BEGIN 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;
/

De procedure zou opzettelijk moeten mislukken op de 4e invoeging met ORA-02291 . Ik heb het op deze manier gemaakt. Dan

ROLLBACK;

Alle tabellen moeten worden teruggedraaid, behalve t3 , die we hebben ingevoegd in een autonome transactie.

SELECT * FROM t1;

no rows selected

SELECT * FROM t2;

no rows selected

SELECT * FROM t3;

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

SELECT * FROM t4;

no rows selected


  1. fulltext zoeken geeft totaal aantal niet terug

  2. Maak Oracle Databse opnieuw vanuit .dbf-bestanden na herinstallatie van Oracle Enterprise 11gR2

  3. Kan het schema niet verwijderen, omdat het niet bestaat of omdat je geen toestemming hebt. - SQL Server / TSQL-zelfstudie, deel 29

  4. Verduistering van ontbrekende databaseverbindingen