我一直试图在数据库表(MySQL v 5.7)上创建一个简单的BEFORE INSERT
触发器,但我一直收到一个模糊的"#1064 ......语法错误"消息无法帮助解决问题。
这是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 :(得分:0)
我没有意识到,默认情况下,phpmyadmin会添加一个;
分隔符,该分隔符会破坏用于结束;
块内语句的BEGIN END
。