我一直在尝试在数据库表(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 并尝试使用它创建触发器时,就不行了!?
感谢您的帮助
最佳答案
我没有意识到,默认情况下,phpmyadmin 添加了一个 ;
分隔符,它破坏了 ;
用于结束 BEGIN END< 中的语句
阻止。
关于MySQL 5.7 创建触发器语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41936283/