您的 SQL 语法有错误...创建触发器时出错

Posted

技术标签:

【中文标题】您的 SQL 语法有错误...创建触发器时出错【英文标题】:You have an error in your SQL syntax... getting error when creating trigger 【发布时间】:2018-08-25 13:13:08 【问题描述】:

我已经为我的数据库编写了触发器。

CREATE TRIGGER executor_type_check BEFORE INSERT ON executors 
FOR EACH ROW 
BEGIN 
  IF NEW.points <> 100
    SET NEW.points = 0; 
  END IF; 
END

导入sql文件时出现以下错误

You have an error in your SQL syntax; 
check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SET NEW.points = 0' at line 5

我的 .sql 文件结构如下:

    数据库创建 开始交易 创建表格 触发器的创建 提交

不触发不显示错误。

【问题讨论】:

缺少then 缺少'; ' 结束后 尝试将DELIMITER $$ 或类似的东西放在触发器定义之前。 【参考方案1】:

根据您的问题下方的Comments

IF 语句后缺少THEN。并且还需要添加DELIMITER

试试这个:

DELIMITER $$
CREATE TRIGGER executor_type_check BEFORE INSERT ON executors 
FOR EACH ROW 
BEGIN 
  IF NEW.points <> 100
  THEN
    SET NEW.points = 0; 
  END IF; 
END;$$
DELIMITER ;

【讨论】:

谢谢您,使用您的代码我没有收到错误,但奇怪的是,当我尝试插入表格时,触发器似乎没有触发。例如。当我输入 99(与 100 不同)时,它仍然插入 99,而不是 0。

以上是关于您的 SQL 语法有错误...创建触发器时出错的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 触发语法错误

Phpmyadmin 在“END”附近创建触发器语法错误

MySQL - 在第 1 行附近创建触发器错误 1064

空字符串无法解释的MySQL错误#1064创建更新触发器后?

创建触发器时出现错误 1064

插入触发器操作时创建触发器语法错误