Test d'un trigger

Résolu
Mahouch Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
Mahouch Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -
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

1 réponse

  1. jee pee Messages postés 31886 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     
    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
    1. Mahouch Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci bcq :)
      j'ai résolu mon problème
      0