Oracle
 sql >> Database >  >> RDS >> Oracle

Un trigger di inserimento richiede un'istruzione di commit

Non solo i trigger non necessitano di un COMMIT in cui non puoi inserirne uno:un trigger non verrà compilato se il codice del corpo include un COMMIT (o un rollback).

Questo perché attiva il fuoco durante una transazione. Quando il trigger si attiva, la transazione corrente non è ancora completa. Quando COMMIT termina, una transazione che consente loro di attivare i trigger interromperebbe l'unità di lavoro.

Quindi le modifiche eseguite in un trigger vengono salvate (o annullate) dalla transazione proprietaria che ha emesso il DML che ha attivato il trigger.

È vero che i trigger possono essere eseguiti sotto PRAGMA AUTONOMOUS_TRANSACTION, nel qual caso devono avere un COMMIT. Ma questo è un caso limite, poiché ci sono pochi usi significativi delle transazioni nidificate in Oracle.