Bonjour à tous,

Voilà, j'ai un petit problème auquel je ne trouve pas de solution.
Je souhaiterais écrire un trigger, me permettant de déclencher une erreur oracle, et paralèlement qui insère les enregistrements bloqués dans une autre table.

Je m'explique :
T1(NUMCDE, ETAT, ...)
T2(NUMCDE, LIGCDE, CODMAG, ...)
T3(ZONE1, ZONE2, ZONE3...)
Supposons le cas suivant :
Dans T1 : NUMCDE = 1000 et ETAT = C
Dans T2 : NUMCDE = 1000, LIGCDE = 1 et CODMAG = 10
C'est que je voudrais faire, c'est que si je change l'état de ma commande, et que mon code magasin ne correspond pas à un critère donné, bloqué le changement d'état de la commande, et inséré dans T3 le numéro de celle-ci pour envoyer une alerte.
i.e. :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
UPDATE T1
SET T1.ETAT = V
WHERE NUMCDE = 1000;
 
IF ( T2.CODMAG NOT IN CONDITION) THEN
    INSERT INTO T3 (:NEW.NUMCDE, :NEW.ETAT, ...);
    RAISE_APPLICATION_ERROR(-20001, 'Validation commande impossible');
END IF;
Merci d'avance pour votre aide