sql >> Base de Datos >  >> RDS >> Oracle

¿Un disparador de inserción necesita una declaración de confirmación?

Los disparadores no solo no necesitan un COMMIT, sino que no puedes poner uno:un disparador no se compilará si el código del cuerpo incluye un COMMIT (o una reversión).

Esto se debe a que los disparadores se disparan durante una transacción. Cuando se activa el disparador, la transacción actual aún no está completa. Como COMMIT finaliza una transacción, permitirles desencadenar rompería la unidad de trabajo.

Por lo tanto, los cambios ejecutados en un activador son confirmados (o revertidos) por la transacción propietaria que emitió el DML que activó el activador.

Es cierto que los disparadores pueden ejecutarse bajo PRAGMA AUTONOMOUS_TRANSACTION, en cuyo caso deben tener un COMMIT. Pero este es un caso límite, ya que hay pocos usos significativos de las transacciones anidadas en Oracle.