MySQL 5.7 创建触发器语法错误?
MySQL 5.7 Create Trigger Syntax Error?
我一直在尝试在数据库 table(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
块中的语句。
我一直在尝试在数据库 table(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
块中的语句。