Trigger [Oracle]

londuba Messages postés 92 Statut Membre -  
londuba Messages postés 92 Statut Membre -
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
A voir également:

3 réponses

asevere Messages postés 13521 Statut Webmaster 426
 
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 92 Statut Membre 11
 
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 13521 Statut Webmaster 426
 
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 92 Statut Membre 11
 
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