Bonjour à tous,
dans le cadre d'un projet d'étude, je dois écrire un trigger qui verifie avant l'insertion de données dans ma table si les données fournit sont correctes:
j'ai d'une part une table pays(id,nom,agemajorite) et d'autre part une table compte(id,pseudo,...,idpays);
Or je ne dois pouvoir enregistré que les utilisateurs majeurs. C'est pourquoi je souhaite écrire un trigger qui verifie l'age en fonction de la date de naissance et de l'age de majorite du pays concerné. Voila mon trigger :
Le trigger se crée bien mais leve une erreur lors de l'exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 CREATE OR REPLACE TRIGGER trigger_majorite BEFORE INSERT ON COMPTE FOR EACH ROW DECLARE majorite INTEGER; datenaiss DATE; BEGIN SELECT pays.ageMajorite INTO majorite FROM pays,compte WHERE pays.id=(SELECT compte.idpays FROM compte) AND pays.id=compte.idpays ; SELECT compte.dateNaissance INTO datenaiss FROM compte ; majorite := majorite*12 ; IF (ADD_MONTHS (datenaiss, majorite) > sysdate) THEN dbms_output.put_line( 'Utilisateur non majeur !') ; END IF ; END ; /
Je pense qu'il me manque une clause WHERE dans mes requetes mais cela reste très sombre.*
ERREUR Ó la ligne 1 :
ORA-01427: sous-interrogation ramenant un enregistrement de plus d'une ligne
ORA-06512: Ó "YOHANN.TRIGGER_MAJORITE", ligne 5
ORA-04088: erreur lors d'exÚcution du dÚclencheur 'YOHANN.TRIGGER_MAJORITE'
Pouvez vous m'aider SVP ?
d'avance merci
Partager