Test d'un trigger

Résolu/Fermé
Mahouch Messages postés 17 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 1 juillet 2013 - 8 déc. 2012 à 23:00
Mahouch Messages postés 17 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 1 juillet 2013 - 18 déc. 2012 à 19:46
Bonjour,
j'ai crée un trigger qui assure la mise en place de la contrainte suivante :toute avion doit etre de type Airbus A330 ,Airbus A400, Boeing B830 et Boeing B720
voici mon code :
create or replace trigger T_M_A
BEFORE INSERT OR UPDATE ON TYPE_APPAREIL
FOR EACH ROW
declare TM TYPE_APPAREIL.MODELE%TYPE;
BEGIN
if :new.modele is not null then
select modele into TM
from TYPE_APPAREIL
where modele=:new.modele;
if TM!='Airbus A330' or TM!='Airbus A400' or TM!='Boeing B830' or TM!='Boeing B720' then raise_application_error('-20004','le type n est pas le préfere');
end if;
end if;
END;

Puis,lorsque je veux faire le test
Test :
insert into TYPE_APPAREIL values('Airbus A330',156250,20020,26020,33000);
il m'affiche un erreur
ORA-04098: trigger 'SYSTEM.T_MODELE' is invalid and failed re-validation

aider moi svp ,merci d'avance
A voir également:

1 réponse

jee pee Messages postés 39635 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235
Modifié par jee pee le 9/12/2012 à 14:23
Salut,

Je ne comprend pas ta logique, tu essaies dans le trigger de relire dans la table l'enregistrement que tu n'as pas encore inséré ????

Pour moi il suffit de tester la valeur de new, quelque chose comme :

create or replace trigger T_M_A
BEFORE INSERT OR UPDATE ON TYPE_APPAREIL
FOR EACH ROW
BEGIN
if :new.modele not in ('Airbus A330','Airbus A400','Boeing B830','Boeing B720')
then raise_application_error('-20004','le type n est pas le préfere');
end if;
END;

cdlt
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
1
Mahouch Messages postés 17 Date d'inscription dimanche 28 octobre 2012 Statut Membre Dernière intervention 1 juillet 2013
18 déc. 2012 à 19:46
Merci bcq :)
j'ai résolu mon problème
0