ORACLE : probleme Trigger

Fermé
Toulousain63 - 1 nov. 2007 à 08:34
 Toulousain63 - 1 nov. 2007 à 09:28
Bonjour,

J'ai un probleme avec un trigger. Je souhaite verifier avant mon insertion/maj dans la table auteur que le nom et prenom n'existe pas deja. Si c'est le cas, je souhaite verifier que la date de naissance entrée soit differente de la naissance de l'auteur ayant le meme nom.
Par ex :

Toto tata 15/01/01
Toto tata 18/01/01

Cependant avec mon systeme, lorsqu'il ne trouve pas de ligne correspondant au nom de l 'auteur, il m'affiche "aucune donnee trouvee"
Auriez vous une solution svp ?

Merci d avance


Create or replace TRIGGER VERIFIER_DONNEES
before update or insert on AUTEUR
for each row
declare
nom varchar(25) ;
prenom varchar(20);
ladate date;
begin
SELECT NOM_AUT,PRENOM_AUT,DATENAISS_AUT INTO nom,prenom,ladate
FROM AUTEUR
WHERE NOM_AUT = :NEW.NOM_AUT AND PRENOM_AUT = :NEW.PRENOM_AUT;


If(nom = :NEW.NOM_AUT) Then
If(prenom = :NEW.PRENOM_AUT) Then
If(ladate = :NEW.DATENAISS_AUT) Then
RAISE_APPLICATION_ERROR(-20010,'Un auteur peut avoir le meme nom et prenom qu un autre auteur mais pas la meme date de naissance');
End If;
End If;
End If;
end ;

2 réponses

Bonjour,

Fraudra ajouter une exception dans le select : s'il ne trouve pas de record, il devra sortir calmement (sans afficher d'erreur).

Nabil
nabil1749@hotmail.com
0
Toulousain63
1 nov. 2007 à 09:28
Bonjour,

Merci pour ta reponse. J'ai utilisé le

EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO AUTEUR VALUES (:NEW.NUM_AUT,:NEW.NOM_AUT,:NEW,PRENOM_AUT,NEW.DATENAISS_AUT)

et j'ai toujours la meme erreur
0