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

¿Cómo definir un disparador ON COMMIT en Oracle?

No hay un mecanismo de activación ON COMMIT en Oracle. Sin embargo, existen soluciones alternativas:

  1. Podría usar una vista materializada con ON COMMIT REFRESH y agregar disparadores a este MV. Esto le permitiría activar la lógica cuando se haya modificado una tabla base en el momento de la confirmación . Si el activador genera un error, la transacción se revertirá (perderá todos los cambios no confirmados).

  2. Puede usar DBMS_JOB para diferir una acción después de la confirmación. Esta sería una acción asincrónica y puede ser deseable en algunos casos (por ejemplo, cuando desea enviar un correo electrónico después de que la transacción se haya realizado correctamente). Si revierte la transacción principal, el trabajo se cancelará. El trabajo y la sesión principal son independientes:si el trabajo falla, la transacción principal no se revertirá.

En su caso, probablemente podría usar la opción (1). Personalmente, no me gusta codificar la lógica comercial en disparadores, ya que agrega mucha complejidad, pero técnicamente creo que sería factible.