sql >> Databasteknik >  >> RDS >> Oracle

Behöver en insättningstrigger ett commit-uttalande

Inte nog med att triggers inte behöver en COMMIT som du inte kan lägga in i:en trigger kompileras inte om kroppens kod innehåller en COMMIT (eller en rollback).

Detta beror på att utlöser brand under en transaktion. När utlösaren aktiveras är den aktuella transaktionen fortfarande inte klar. När COMMIT avslutar en transaktion som tillåter dem att triggers skulle bryta arbetsenheten.

Så ändringar som exekveras i en utlösare begås (eller rullas tillbaka) av ägartransaktionen som utfärdade den DML som utlöste utlösaren.

Det är sant att triggers kan köras under PRAGMA AUTONOMOUS_TRANSACTION, i vilket fall de måste ha en COMMIT. Men detta är ett fördelaktigt fall, eftersom det finns få meningsfulla användningar av kapslade transaktioner i Oracle.



  1. Finns det något sätt att använda OrmLite med Postgres hstores?

  2. Använder JDBC när servernamnet innehåller ett snedstreck (localhost\TESTDATA)

  3. LOG() Funktion i Oracle

  4. Hur utför jag en GROUP BY på en aliasad kolumn i MS-SQL Server?