IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 2 fois
Vote des utilisateurs
0 
2 
Détails
Licence : Non renseignée
Mise en ligne le 25 janvier 2017
Langue : Français
Référencé dans
Navigation

Triggers; ORA-04091: la table est en mutation ; le déclencheur ou la fonction ne peut la voir

ORA-04091 triggers table mutation
Nos ressources disponibles
Bonjour,
Lors de la création d'un trigger pour faire un update (ou autres) sur la même table, Oracle sort une erreur sur la table en mutation.
Pour la contourner, il faut une transaction autonome:

CREATE OR REPLACE TRIGGER triggerTable
AFTER UPDATE
OF cd_etat_mob
ON table_agent REFERENCING NEW AS New OLD AS Old
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN

-- Votre UPDATE

-- Transaction autonome, un commit obligatoire
COMMIT;

END triggerTable;
/

Ceux-ci est ma petite contribution à la communauté, j'espère que cela aidera aux autres.
Avatar de mnitu
Expert éminent sénior https://www.developpez.com
Le 31/01/2017 à 17:27
Triggers consider harmfull, consider harmfull un "must" pour quiconque veut bien comprendre le problème de la table en mutation!
Avatar de mnitu
Expert éminent sénior https://www.developpez.com
Le 01/02/2017 à 11:44

Il faut trouver un compromis, d'où la méthode de "PRAGMA AUTONOMOUS_TRANSACTION".
C'est pas une méthode mais un bug!
Avatar de vuduymackhai
Membre à l'essai https://www.developpez.com
Le 01/02/2017 à 10:33
Oui, c'est une solution de contournement, elle n'est pas dans les règles de l'art. Mais elle a le mérite d'être simple et compréhensive pour les novices.

Les vraies solution sont proposées par developpez.com. J'ai proposé à l'entreprise la solution de la "Méthode des deux déclencheurs" qui (selon moi) est la plus facile à comprendre.
Malgré cela, les décideurs la trouvent trop compliqués. Changé le modèle de la base, ne pensez même pas.
Les décideurs ont raisons. Ils ont pensé aux futurs développeurs (débutants) qui n'ont peut être pas les compétences nécessaires.
Passer trop de temps sur un trigger n'est pas rentable pour la société.

Il faut trouver un compromis, d'où la méthode de "PRAGMA AUTONOMOUS_TRANSACTION".

Merci pour vos remarques, ils aident beaucoup aux développeurs et pour la communauté developpez.com (comme pour moi).
Avatar de vuduymackhai
Membre à l'essai https://www.developpez.com
Le 01/02/2017 à 11:48
Merci mnitu, je prends note.
Avatar de vuduymackhai
Membre à l'essai https://www.developpez.com
Le 25/01/2017 à 9:45
Bonjour,

Je vous propose un nouvel élément à utiliser : Triggers; ORA-04091: la table est en mutation ; le déclencheur ou la fonction ne peut la voir

ORA-04091 triggers table mutation

Qu'en pensez-vous ?
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.