2017-10-09 12 views
0

私は私のデータベースにトリガを作成しようとしているの作成など、そのテーブルHISTORYテーブルへの挿入後、MESSAGE属性は他の"FINISHED"FINISHED="F"場合、MESSAGEで、属性FINISHED="T"、場合"NOT FINISHED"です。私はこれを実行しようとするとは、SQLを使用して、SQLトリガー

これは、現在、私のコードですが、それは

を「トリガーは、コンパイル・エラーで作成した」と言う人が、この文と間違っているものを私に教えていただけますか?ありがとうございました!

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

MySQLまたはOracleを使用していますか?そのコードは両方で実行されません。 – jarlh

+0

@jarlh私はOracleを使用しています。 –

+2

文字列リテラルを一重引用符で囲みます。 –

答えて

2

私はこれがあなたが意図するものであると思う:

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; 

注それが挿入された行を変更する予定ので、これは、前に挿入トリガーであること。

関連する問題