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

Déclencheur INSERT pour insérer un enregistrement dans la même table

La mutation se produit chaque fois que vous avez un déclencheur au niveau de la ligne qui modifie la table sur laquelle vous déclenchez. Le problème, c'est qu'Oracle ne peut pas savoir comment se comporter. Vous insérez une ligne, le déclencheur lui-même insère une ligne dans le same table, et Oracle devient confus, car ces insertions dans la table en raison du déclencheur sont-elles également soumises à l'action du déclencheur ?

La solution est un processus en trois étapes.

1.) Niveau d'instruction avant le déclencheur qui instancie un package qui gardera une trace des lignes insérées.

2.) Déclencheur au niveau de la ligne avant ou après qui enregistre ces informations de ligne dans les variables de package qui ont été instanciées à l'étape précédente.

3.) Niveau d'instruction après le déclencheur qui insère dans la table, toutes les lignes enregistrées dans la variable de package.

Un exemple de ceci peut être trouvé ici :

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

J'espère que ça aide.