2017-10-09 4 views
0

Je suis en train de créer un déclencheur sur ma base de données, en utilisant SQL, de sorte qu'après une insertion dans la table de HISTORY, si l'attribut FINISHED="T", l'attribut MESSAGE est "FINISHED" autre, si FINISHED="F", le MESSAGE est "NOT FINISHED".Création d'un déclencheur SQL

Ceci est mon code actuellement lorsque je tente de lancer cela, il dit

« Trigger créé avec des erreurs de compilation »

Quelqu'un pourrait-il s'il vous plaît me dire ce qui ne va pas avec cette déclaration? Je vous remercie!

CREATE OR REPLACE TRIGGER MESSAGE_TR 
AFTER INSERT 
ON HISTORY 
FOR EACH ROW 
BEGIN 
    IF (HISTORY.FINISHED="T") 
    THEN 
     INSERT INTO HISTORY(MESSAGE) VALUES("FINISHED"); 
    ELSEIF (HISTORY.FINISHED="F") 
     INSERT INTO HISTORY(MESSAGE)VALUES("NOT FINISHED"); 
END; 
/
+1

Utilisez-vous MySQL ou Oracle? Ce code ne fonctionnera pas sur les deux. – jarlh

+0

@jarlh J'utilise Oracle. –

+2

Je commencerais par des guillemets simples autour des littéraux de chaîne. –

Répondre

2

Je pense que c'est ce que vous avez l'intention:

CREATE OR REPLACE TRIGGER MESSAGE_TR 
BEFORE INSERT 
ON HISTORY 
FOR EACH ROW 
BEGIN 
    :NEW.MESSAGE := (CASE WHEN :NEW.FINISHED = 'T' THEN 'FINISHED' ELSE 'NOT FINISHED' END); 
END; 

Notez que ceci est un avant déclencheur d'insertion, car il a l'intention de modifier la ligne insérée.