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.
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
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 .
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
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