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 :

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 ;
/
Le trigger se crée bien mais leve une erreur lors de l'exécution :

*
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'
Je pense qu'il me manque une clause WHERE dans mes requetes mais cela reste très sombre.

Pouvez vous m'aider SVP ?

d'avance merci