Test d'un trigger

Résolu
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. Modérateur
    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. Merci bcq :)
      j'ai résolu mon problème
      0