2016-05-03 6 views
1

私はTRIGGERを設定して、空の文字列を消去してからINSERTの前にしようとしています。ロケット科学ではありませんが、私の構文ではエラーが見つかりません!ここでMySQLは助けを必要とします

はここTRIGGER自体

USE `ga_abtest_logging`; 
DELIMITER $$ 
CREATE TRIGGER avoid_empty 
    BEFORE INSERT ON daily_analytics 
     FOR EACH ROW 
     BEGIN 
      IF profileID = '' 
       THEN SET profileID = NULL 
      END IF; 
     END$$ 

が何であるかをワークベンチが表示されている:それはsyntax error, unexpected END, expecting ';'

を読み込みEND IFオーバーホバーで

DELIMITER

を私が持つ問題を抱えているだろう私のDBの設定は?私はMySQLのドキュメントを通過して、私はトリガーが正しいようだと思う!誰かが明らかに間違っているものを見ますか?

+1

トリガやストアドプロシージャ '以外に、あなたの' DELIMITER'を変更を定義する; ' – tadman

+0

編集...ノー行く.. – Zak

+0

NEW.profileIdは= '' その後、NEW.ProfileID = NULL設定された場合。これを試してみてください。 –

答えて

3

あなたは、いくつかの変更を加える必要があります。

  • 列値
  • を参照するときにNEW.接頭辞を使用すると、あなたが値に
を設定する行の末尾にセミコロンを追加します。

例:

DELIMITER $$ 

CREATE TRIGGER tr_b_ins_daily_analytics BEFORE INSERT ON daily_analytics FOR EACH ROW BEGIN 
    IF (NEW.profileID = '') 
    THEN 
    SET NEW.profileID = NULL; 
    END IF; 
END $$ 

DELIMITER ; 
+1

'IF ... THEN'、そう? – tadman

+0

「THEN」を追加すると、私は答えを受け入れるでしょう..ありがとう! – Zak

+0

おっと、申し訳ありません。一定。 –

0

次のコードは動作するはずです。

DELIMITER $$ 
CREATE TRIGGER avoid_empty 
    BEFORE INSERT ON daily_analytics 
     FOR EACH ROW 
     BEGIN 
      IF NEW.profileID = '' 
       THEN SET NEW.profileID = NULL; 
      END IF; 
     END;$$ 
DELIMITER ; 
関連する問題