【问题标题】:You have an error in your SQL syntax... getting error when creating trigger您的 SQL 语法有错误...创建触发器时出错
【发布时间】: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 文件结构如下:

  1. 数据库创建
  2. 开始交易
  3. 创建表格
  4. 触发器的创建
  5. 提交

不触发不显示错误。

【问题讨论】:

  • 缺少then
  • 缺少'; ' 结束后
  • 尝试将DELIMITER $$ 或类似的东西放在触发器定义之前。

标签: mysql sql database triggers xampp


【解决方案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。
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
相关资源
最近更新 更多