2017-01-30 13 views
0

私はデータベーステーブル(MySQL v 5.7)で単純なBEFORE INSERTトリガーを作成しようとしていましたが、問題を解決するのに役立たない曖昧な "#1064 ...構文エラー"メッセージを受け取り続けます。ここでMySQL 5.7作成トリガー構文エラー?

はSQLです:

CREATE OR REPLACE TRIGGER `CREATE_QUIZ_TRIG` BEFORE INSERT ON `quiz` 
FOR EACH ROW BEGIN 
    SET NEW.ACTIVE = UPPER(NEW.ACTIVE); 
    SET NEW.CREATED = NOW(); 
END 
/

私がやろうとしているすべての大文字、その後、タイムスタンプ列に現在の日付&時間を挿入する列を強制しています。私はからドキュメントを追ってきた:

https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html

とマルチステートメントの発現のために、私は、トリガーの創造の初めに区切りを再定義する必要がありますが、同じ「#1064」というエラーが発生したことを実現します。

これは、同じトリガーを作成するためにphpmyadminのインターフェースを使用すると、うまく機能するため、さらに混乱します。しかし、生成されたSQLをエクスポートし、それを使用してトリガーを作成しようとしません。任意のヘルプ

+0

私は生成されたSQLをエクスポートし、それを使用してトリガーを作成しようとしません! - これは何を意味するのでしょうか? –

+0

PhpMyAdminを使用すると、GUIを使用してテーブルを作成するために使用されるSQLを出力できます。このGUIを使用してテーブルを作成すると、トリガが正常に作成されたため、生成したSQLをエクスポートし、GUIではなくSQLを使用してテーブルを作成しようとしました。これは私が独特だと思ったものではありませんでした。 PHPMyAdminが自動的にトリガーのデフォルトの区切り文字を ';'に設定していたことが原因で、 'SET ..の後にセミコロンのためにトリガーを作成しようとしたときに構文エラーが発生しました。 'コマンド(s) - それは区切り文字だと思った –

答えて

0

ため

おかげで私は、デフォルトでは、phpmyadminのはBEGIN ENDブロック内の文を終了するために使用;を壊した;区切り文字を追加することを認識していませんでした。