MySQL 5.7 创建触发器语法错误?

标签 mysql sql triggers phpmyadmin mysql-5.7

我一直在尝试在数据库表(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/

相关文章:

google-apps-script - 简单触发器 onSelectionChange(e) 不起作用

wpf - 无法识别目标名称

mysql - 表中的指针大小是多少?

mysql - 文本列中设置的搜索

python - Django 忽略 mysql 连接错误

c# - 将多维字节数组保存到 SQL Server 数据库

php - 我的登录 PHP 脚本出现故障

SQL 选择在日期范围内年龄为 17 岁的用户

sql - 选择表中两个日期列之间的所有日期

mysql - 无法更新存储函数中的表 'attendance_tbl'/触发器删除错误