Bonjour,

j'ai une table LISTE_SERVICE qui gèrent les appartenances des personnes à des services d'une société :
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")
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
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 :
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