创建触发器时 MySQL 语法错误

Mut*_*. V 2 mysql database triggers mysql-error-1064

这是我的触发器,我收到 MySQL 语法错误。我想减少 sms_index表sms_count值的余额。

 CREATE TRIGGER sms_log_update AFTER UPDATE ON sms_index
  FOR EACH ROW
  BEGIN
    IF NEW.approved_status = '1' THEN
      UPDATE  sms_package SET  balance =  (balance - OLD.sms_count) WHERE  group_id = OLD.ins_group_id;
    END IF;
  END;
Run Code Online (Sandbox Code Playgroud)

错误信息:

 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5 
Run Code Online (Sandbox Code Playgroud)

Tim*_*sen 5

除了分隔符可能存在的问题之外,您的代码看起来是正确的。请尝试以下操作:

DELIMITER //
CREATE TRIGGER sms_log_update AFTER UPDATE ON sms_index
FOR EACH ROW
BEGIN
    IF NEW.approved_status = '1' THEN
        UPDATE  sms_package SET  balance =  (balance - OLD.sms_count)
        WHERE  group_id = OLD.ins_group_id;
    END IF;
END;//

DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

文档中:

但是,就像存储例程一样,如果使用mysql程序定义执行多条语句的触发器,则需要重新定义mysql语句分隔符,以便可以使用; 触发器定义中的语句分隔符。