Oracle
 sql >> Base de données >  >> RDS >> Oracle

Un déclencheur d'insertion a-t-il besoin d'une instruction de validation

Non seulement les déclencheurs n'ont pas besoin d'un COMMIT, mais vous ne pouvez pas en mettre un :un déclencheur ne compilera pas si le code du corps inclut un COMMIT (ou une annulation).

En effet, les déclencheurs se déclenchent lors d'une transaction. Lorsque le déclencheur se déclenche, la transaction en cours n'est toujours pas terminée. Comme COMMIT termine une transaction les autorisant dans les déclencheurs casserait l'unité de travail.

Ainsi, les modifications exécutées dans un déclencheur sont validées (ou annulées) par la transaction propriétaire qui a émis le DML qui a déclenché le déclencheur.

Il est vrai que les déclencheurs peuvent s'exécuter sous le PRAGMA AUTONOMOUS_TRANSACTION, auquel cas ils doivent avoir un COMMIT. Mais il s'agit d'un cas marginal, car il existe peu d'utilisations significatives des transactions imbriquées dans Oracle.