Trigger UPDATE qui update lui même un champ / Boucle?
Bonjour,
J'ai déjà pas mal cherché mais pas encore trouvé de solution!
J'ai une table Accueil qui est de cette forme
Code:
1 2 3 4 5 6 7 8 9
|
ID Code_structure Adresse
1 10 1 chemin de Pierres
2 20 36 rue des Alouettes
3 20 36 rue des Alouettes
4 20 36 rue des Alouettes
5 30 15 avenue de Bel Air
6 30 15 avenue de Bel Air
7 40 2 rue André Albert |
Ce que je souhaite faire c'est que lorsque l'utilisateur modifie une adresse, alors toutes les adresses dont le code_structure correspond à la ligne qui vient d'être modifiée soient mises à jour avec la nouvelle adresse
Par exemple pour l'enregistrement ID=5, l'adresse devient "15 rue de Bel Air". Je souhaiterai que mon trigger mette à jour l'enregistrement ID=6 (qui a le même code_structure) et automatiquement lui affecter au champ adresse la valeur "15 rue de Bel Air"
Alors oui je sais, ce n'est pas du tout correct modélisationnellement parlant :weird:
On devrait avoir une table Structure qui contient l'adresse, liée à la table Accueil qui elle même accueillerait le champ code_structure comme clé étrangère
Seulement voilà, vis à vis de l'outil qui exploite mes données et selon le rendu souhaité par les utilisateurs je n'ai pas vraiment le choix... alors pouvez-vous m'aidez quand même? :mrgreen:
Mon trigger aurait cette forme là :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
CREATE OR REPLACE TRIGGER TRIG3 AFTER update of adresse ON Accueil for each row
declare
pragma autonomous_transaction;
BEGIN
update Table
set adresse= :new.adresse where code_structure=:new.code_structure;
END ;
/ |
Seulement, et c'est logique, j'ai l'impression qu'il boucle, j'ai ce message là quand je fais un UPDATE sur mon champ adresse :
Code:
1 2 3
| ORA-00060: détection d'interblocage pendant l'attente d'une ressource
ORA-06512: à "ENFANCE.TRIG3", ligne 5
ORA-04088: erreur lors d'exécution du déclencheur 'ENFANCE.TRIG3' |
Ce qui serait logique puisque je mets à jour un champ qui déclenche lui même un trigger lorsqu'on le met à jour...
Je butte vraiment sur le problème depuis 2 jours!
Merci d'avance pour toutes pistes de reflexion ou de recherches que vous pourriez m'apporter!