nouvelle question, toujours à propos de l'enregistrement courant...
mon trigger ressemble à ça :
create or replace TRIGGER RTL_delete
AFTER UPDATE OF CUR_VAL ON MYTABLE
FOR EACH ROW
DECLARE VL_ID2 number;
BEGIN
if :new.CUR_VAL = 0 and :new.INS_UPDT = 3 then
update TABLE1 set cur_val = :new.CUR_VAL, ins_updt = :new.INS_UPDT, val_dt = sysdate
where TABLE1.ID = ID;
update TABLE2 set cur_val = :new.CUR_VAL, ins_updt = :new.INS_UPDT, val_dt = sysdate
where TABLE2.ID = ID;
update TABLE3 set cur_val = :new.CUR_VAL, ins_updt = :new.INS_UPDT
where TABLE3.ID = ID;
select TABLE3.ID2 into VL_ID2 from TABLE3
where TABLE3.ID = ID;
update TABLE4 set cur_val = :new.CUR_VAL, ins_updt = :new.INS_UPDT, val_dt = sysdate
where TABLE4.ID = ID;
update TABLE5 set cur_val = :new.CUR_VAL, ins_updt = :new.INS_UPDT, val_dt = sysdate
where TABLE5.ID2 = VL_ID2;
end if;
END;
/
est-ce que dans tous les cas le ID qui est en gras correspond à celui de l'enregistrement modifié dans MYTABLE ??
car dans le cas du select, ça ne me ramène pas qu'une seule valeur alors que ça devrai... du coup, ORA-01422...
... et dans d'autres triggers similaires (mais sans select, avec donc moins de jointures entre les tables), l'ID correspond bien à l'enregistrement modifié dans la table de départ car les bons enregistrements sont modifiés dans les tables suivantes...
je précise que ma TABLE3 ne contient qu'un seul enregistrement pour l'ID...
merci de votre aide !
Message édité par ouf le 30-07-2002 à 16:48:20