Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1510 connectés 

  FORUM HardWare.fr
  Programmation

  [oracle] TRIGGERS... question tres simple pour ceux qui connaissent..

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[oracle] TRIGGERS... question tres simple pour ceux qui connaissent..

n°186084
ouf
Posté le 30-07-2002 à 14:43:00  profilanswer
 

salut à tous
 
voilà, je dois écrire des triggers....
il doivent se déclencher suite à l'update de DEUX champs dans une table....
 
comment capturer l'évenement ??
 
create or replace TRIGGER PP_delete
AFTER UPDATE OF CUR_VAL and INS_UPDT ON MYTABLE

 
y a-t-il quelque chose qui ressemble à ça ??
 
merci !


Message édité par ouf le 30-07-2002 à 16:28:52
mood
Publicité
Posté le 30-07-2002 à 14:43:00  profilanswer
 

n°186092
ouf
Posté le 30-07-2002 à 14:47:33  profilanswer
 

bon je vais ne mettre qu'un champ dans la after update of
et mettre une condition sur le 2ème champ dans l'action...
 
autre question...
j'utilise :new et :old...
existe-t-il un :current ou equivalent ?
ou bien le nom du champ seul suffit pour déterminer l'enregistrement courrant ?

n°186095
HappyHarry
Posté le 30-07-2002 à 14:48:08  profilanswer
 

ouf a écrit a écrit :

bon je vais ne mettre qu'un champ dans la after update of
et mettre une condition sur le 2ème champ dans l'action...
 
autre question...
j'utilise :new et :old...
existe-t-il un :current ou equivalent ?
ou bien le nom du champ seul suffit pour déterminer l'enregistrement courrant ?




 
derniere option


Message édité par HappyHarry le 30-07-2002 à 14:48:25
n°186108
ouf
Posté le 30-07-2002 à 14:54:08  profilanswer
 

merci bien
 
j'avais jamais fait de trg à la paluche...
et ça fait longtemps que j'ai pas touché developper2000....
 
merci bien, je m'en sors ;)

n°186269
ouf
Posté le 30-07-2002 à 16:25:47  profilanswer
 

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
n°186304
HappyHarry
Posté le 30-07-2002 à 16:51:26  profilanswer
 

j'vois pas trop ou pourrait etre le pb ...
 
ID c ton identifiant ? il est bien unique ?


Message édité par HappyHarry le 30-07-2002 à 16:56:40
n°186314
ouf
Posté le 30-07-2002 à 16:58:23  profilanswer
 

HappyHarry a écrit a écrit :

j'vois pas trop ou pourrait etre le pb ...




 
je l'ai trouvé !!
 
merci HappyHarry :jap:
 
oui ID est bien l'identifiant unique
 
en fait, il me suffit d'imbriquer le select dans le dernier update sans passer par une variable
 
il semblerai que les select dans des trigger c pas trop ça... de plus, j'ai un peu abusé avec la Chartreuse hier soir, là je rame pas mal...
 
merci encore, @++


Message édité par ouf le 30-07-2002 à 16:59:36
n°186317
HappyHarry
Posté le 30-07-2002 à 17:00:01  profilanswer
 

ouf a écrit a écrit :

 
 
je l'ai trouvé !!
 
merci HappyHarry :jap:
 
oui ID est bien l'identifiant unique
 
en fait, il me suffit d'imbriquer le select dans le dernier update sans passer par une variable
 
il semblerai que les select dans des trigger c pas trop ça... de plus, j'ai un peu abusé avec la Chartreuse hier soir, là je rame pas mal...
 
merci encore, @++




 
euh ... j'pas tout compris, tu peux poster le code final, ca pourra toujours servir a qq'un

n°186361
ouf
Posté le 30-07-2002 à 17:28:15  profilanswer
 

yaiss
 
en fait j'ai fait ça (attention c vraiment tout con ;))
 
create or replace TRIGGER RTL_delete
AFTER UPDATE OF CUR_VAL ON MYTABLE
FOR EACH ROW
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;
 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 in (select TABLE3.ID2 from TABLE3  
   where TABLE3.ID = ID)
;
end if;
END;  
/

 
c t vraiment tout bête...


Message édité par ouf le 30-07-2002 à 17:28:47

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [oracle] TRIGGERS... question tres simple pour ceux qui connaissent..

 

Sujets relatifs
[HTML] question toute conne ..[VB(A)]question de tableau...
question atoiquestion de fonction ???
Question simple pour les connaisseursComment récupérer les accents d'une requete SQL (oracle) ?
question avec les forums phpbb2Question de debutant [edit] : Sous Outlook
re-question de newbie :c quoi une classe? 
Plus de sujets relatifs à : [oracle] TRIGGERS... question tres simple pour ceux qui connaissent..


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR