Bonjour a tous,

Je veux créer un trigger before update afin mettre à jour un champ d'une table t1 à partir d'une autre table t2.

avec un sql simple, le problème ne se pose pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
update t1 set field = (select field  from t2 where t1.id=t2.id  where exists (select null from t2 where t1.id=t2.id);
mais lorsque je veux créer le trigger associé, j'ai toujours le problème de table mutante.
et pour contourner ce problème. j'ai du créer une table intermédiaire pour que ça fonctionne.

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
CREATE OR REPLACE TRIGGER TRIG_maj BEFORE UPDATE ON t1
DECLARE
    V_field t2.field%TYPE;
 
BEGIN
    FOR i IN (SELECT * FROM t2) LOOP
 
        IF i.field IS NOT NULL THEN
 
         UPDATE t3 SET field =i.field  WHERE Id=i.id;  ---- sachat que table t3= t1
 
        END IF ;
    END LOOP ;
 
END ;
/
sauf que le souci est que ça met à jour la table t3 et non pas la table t1 !!!!

Pouvez-vous m'aider svp sur ce point?

Merci d'avance