trigger sous requete

trigger sous requete - SQL/NoSQL - Programmation

Marsh Posté le 29-01-2010 à 10:25:27    

Bonjour
 
Je veux faire un trigger qui agit comme une clé etrangere pour m'assurer qu'une variable existe bien dans une autre table .
 

Citation :


BEGIN
         
    IF (:Old.CD__PAYS in (SELECT cd_pays from tpays)) THEN
         
       INSERT INTO TAB (TAB_ID, NUM_AFF, ADR_MAIL_AR,)  
       VALUES (SEQ_TAB.nextval,:New.NUM_AFF,:New.ADR_MAIL_AR);
         
    END IF;
     
END;


 
J'ai une erreur

Citation :

24/38   PLS-00405: sous-requête non autorisée dans ce contexte
24/5    PL/SQL: Statement ignored


 
J'ai pas trouvé d'exemple de trigger avec un IN. Je ne peux pas non plus mettre toutes les valeurs des codes pays dans un tableau pour pouvoir ansuite les comparer avec la valeur que je veux insérer en base.
 
Si vous avez des idées. Merci
 

Reply

Marsh Posté le 29-01-2010 à 10:25:27   

Reply

Marsh Posté le 29-01-2010 à 11:10:39    

Essayer:

BEGIN  
  Declare
    wDummy varchar2(10);
  Begin
    SELECT cd_pays into :wDummy
       from tpays where cd_pays = :Old.CD__PAYS;
  Exception
    When OTHERS Then return;
  End;
  Begin
     INSERT INTO TAB (TAB_ID, NUM_AFF, ADR_MAIL_AR,)  
     VALUES (SEQ_TAB.nextval,:New.NUM_AFF,:New.ADR_MAIL_AR);  
  Exception
    When OTHERS Then null; -- ou enregistre le message d'erreur dans table de log
  End;
END;  


Message édité par olivthill le 29-01-2010 à 11:14:03
Reply

Marsh Posté le 29-01-2010 à 14:25:31    

Merci
mon trigger compile, reste plus qu'a le tester

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed