MySQLでCreate Triggerを発行した際にシンタックスエラーで詰まったのでここに記載しておきます。
シチュエーションとしてはCreate Triggerに限らずストアドを実行する場合全てに当てはまりそうなので、mySQL触り始めだとみんなひっかかりそうだなーと思いまとめました。
よそに書いてあることのまとめみたいになっちゃってるんだけど、エラーで引っかかる人向けってことで。
構文例:
create trigger TriggerName
before update on TableName
for each row
begin
set NEW.ColmnName = current_timestamp;
end
構文エラー:
You have an error in your SQL syntax;
check the manual that corresponds to
your MySQL server version
for the right syntax to use near '' at line 5
結論として、本来mySQLのクエリではセミコロン[;]が終了文字として指定されているため、セミコロン記述の時点でクエリ発行が終了する。
ところが、set文等のストアドはセミコロン記載後もそのまま構文が継続するパターンがあるため(例のように)、セミコロン以外を一時的に終了文字(デリミタ)に置き換えてあげる必要がありました、という話。
修正例:
delimiter $$
create trigger TriggerName
before update on TableName
for each row
begin
set NEW.Date = current_timestamp;
end$$ delimiter ;
修正例ではデリミタを$$に置き換えて実施してますが他の文字でももちろんOKです。
実行後、デリミタをセミコロンに戻しておきましょう。
以上
参考:
http://www.dbonline.jp/mysql/trigger/index1.html
http://youkosodododo.blog54.fc2.com/blog-entry-12.html