Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/04/2011, 11h22   #1
Invité de passage
 
Homme
Chef de projet en SSII
Inscription : avril 2011
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 1
Points : 0
Points : 0
Par défaut 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
pozzera est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2011, 11h40   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Résolution du problème de la table mutante
Mais surtout lisez The Trouble with Triggers
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h06.


 
 
 
 
Partenaires

Hébergement Web