Trigger [Oracle]

Fermé
londuba Messages postés 89 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 25 octobre 2011 - 26 août 2008 à 13:54
londuba Messages postés 89 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 25 octobre 2011 - 26 août 2008 à 15:16
Bonjour,
j'utilise oracle 10g express, j'ai une table T1 dont je veux appliquer un trigger qui interdit l'insertion pour eviter un doublon dans un chanp C1, au moment d'insérer s'il existe la même donnée dans le champ je veux que mon trigger refuse cette insertion en fait je connait pas les trigger mais d'après mes recherches sur google j'ai réussie à créer un trigger qui n'a pas d'erreur dans le code mais malheureusement qui fonctionne pas car malgré le trigger j'arrive à inserer des doublons voici mon code :

CREATE OR REPLACE TRIGGER  "Trigger_sans_erreur_compile" 
AFTER  insert on TABLE1
for each row
DECLARE CHAMP1 NUMBER(4);
begin
IF :new.CHAMP1=:old.CHAMP1 
THEN
raise_application_error(-20040,'insertion impossible');
END IF;
end;

je sais vraiment pas pourquoi j'arrive toujours à insérer des doublons.
Merci pour votre aide

3 réponses

asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
26 août 2008 à 13:57
Bonjour,

Alors premièrement, pour ce type de trigger, il faudrait le faire avant l'insertion et non après (BEFORE INSERT)
Ensuite, pourquoi ne pas utiliser simplement une clé unique ? (sauf a faire des tests)...

A plus
0
londuba Messages postés 89 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 25 octobre 2011 11
26 août 2008 à 14:25
Merci asever pour ta reponse rapide, j'ai essayer avec before update mais j'arrive toujours à inserer les doublons en fait il est vraie qu'on peut avoir d'autres alternatives mais je dois le gérer avec un trigger.
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
26 août 2008 à 15:01
Before INSERT, j'ai modifier, mais le mail à du partir avec Before UPDATE.... c'est bien Before INSERT qu'il faut utiliser
0
londuba Messages postés 89 Date d'inscription mercredi 30 novembre 2005 Statut Membre Dernière intervention 25 octobre 2011 11
26 août 2008 à 15:16
Oui j'ai vue juste mais meme avec insert je parviens toujours à insérer des doublons je sais pas s'il faut pas utiliser des requêtes select dans le begin pour tester mais je sais vraiment pas comment faire.
0