2017-01-30 164 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,並嘗試使用該SQL而不是GUI創建表;這不起作用,我認爲這是奇怪的。 原來,問題是PHPMyAdmin自動將觸發器的默認分隔符設置爲';',這就是爲什麼當我嘗試創建觸發器時由於SET後出現了分號而出現語法錯誤。命令 - 它認爲那些是分隔符 –

回答

0

我沒有意識到的是,在默認情況下,phpMyAdmin的增加了;定界符這是打破用來結束BEGIN END塊內聲明的;