Bonjour,
J'ai une table (gestionnaire) qui est référencée dans deux autres tables, j'ai écris un trigger qui, lorsque je supprime une ligne de la table gestionnaire, je met à jour les deux autres table.
Problème : lorsque je fais un delete sur la table gestionnaire, j'ai cette erreur:
ORA-04091: la table GESTIONNAIRE est en mutation ; le déclencheur ou la fonction ne peut la voir
ORA-06512: à "T_DELETE_GEST", ligne 5
ORA-04088: erreur lors d'exécution du déclencheur 'T_DELETE_GEST'
table gestionnaire(
id number, --primary key
code varachar2
)
table utilisateurs(
id number
--some fields
id_gestionaire foreign key references gestionnaire (id)
)

table sku(
id number
--some fields
id_gestionaire foreign key references gestionnaire (id)
)
Le code du Trigger :
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
CREATE OR REPLACE TRIGGER t_delete_gest
BEFORE DELETE ON gestionnaire
FOR EACH ROW
DECLARE
    id_gestAdmin NUMBER;
BEGIN
    -- Select id gest for Admin
    SELECT id INTO id_gestAdmin
    FROM gestionnaire
    WHERE code = '*';
    -- Update SKU's of gest to Admin's
    UPDATE sku
    SET id_gestionnaire = id_gestAdmin
    WHERE id_gestionnaire = :OLD.id;
 
    UPDATE utilisateurs
    SET id_gestionnaire = id_gestAdmin
    WHERE id_gestionnaire = :OLD.id;
 
END;