Bonjour,
j'ai une table LISTE_SERVICE qui gèrent les appartenances des personnes à des services d'une société :
Par trigger lorsque qu'une personne qui un SERVICE particulier, je voudrais la supprimer d'autres services automatiquement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CREATE TABLE LISTE_SERVICE ( "SERVICE " VARCHAR2(55 BYTE) NOT NULL ENABLE, "USER" VARCHAR2(255 BYTE) NOT NULL ENABLE, PRIMARY KEY ("SERVICE ", "USER")Bien évidemment, j'obtiens l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 CREATE OR REPLACE TRIGGER del_service BEFORE DELETE ON LISTE_SERVICE FOR EACH ROW declare p_user VARCHAR2(51); p_service VARCHAR2(51); BEGIN p_user := :old.user; p_service := :old.service; -- suppression du service MAINTENANCE IF (p_service = 'MAINTENANCE') THEN DELETE VP_Lst WHERE service LIKE 'MAINTENANCE$%' and user = p_user; END IF; -- suppression du service SECRETARIAT IF (p_service = 'SECRETARIAT') THEN DELETE VP_Lst WHERE service LIKE 'SECRETARIAT$%' and user = p_user; END IF; END; /
J'ai essayé de passer par une table temporaire avec 2 triggers mais j'ai toujours ce type d'erreur.ORA-04091: "table %s.%s is mutating, trigger/function may not see it"
Comment pourrais-je résoudre ce problème?
Merci de votre aide
Partager