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

Desencadenador INSERT para insertar un registro en la misma tabla

La mutación ocurre cada vez que tiene un disparador de nivel de fila que modifica la tabla en la que está disparando. El problema es que Oracle no puede saber cómo comportarse. Inserta una fila, el disparador mismo inserta una fila en el mismo y Oracle se confunde, porque esas inserciones en la tabla debido al disparador, ¿también están sujetas a la acción del disparador?

La solución es un proceso de tres pasos.

1.) Nivel de instrucción antes del activador que instancia un paquete que realizará un seguimiento de las filas que se insertan.

2.) Desencadenador anterior o posterior a nivel de fila que guarda la información de esa fila en las variables del paquete que se instanciaron en el paso anterior.

3.) Nivel de declaración después del activador que inserta en la tabla, todas las filas que se guardan en la variable del paquete.

Puede encontrar un ejemplo de esto aquí:

http://asktom.oracle.com/pls/asktom/ASKTOM .download_file?p_file=6551198119097816936

Espero que ayude.