Comment supprimer plusieurs enregistrement par triggers sans avoir l'erreur Table Mutante ORA-04091
Bonjour,
j'ai une table LISTE_SERVICE qui gèrent les appartenances des personnes à des services d'une société :
Code:
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") |
Par trigger lorsque qu'une personne qui un SERVICE particulier, je voudrais la supprimer d'autres services automatiquement :
Code:
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;
/ |
Bien évidemment, j'obtiens l'erreur :
Citation:
ORA-04091: "table %s.%s is mutating, trigger/function may not see it"
J'ai essayé de passer par une table temporaire avec 2 triggers mais j'ai toujours ce type d'erreur.
Comment pourrais-je résoudre ce problème?
Merci de votre aide