这是我的触发器,我得到了mysql语法错误。我想从sms_index table sms_count column值中减少余额。
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;
错误消息:
#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
最佳答案
您的代码看起来是正确的,除了分隔符可能有问题。请尝试以下操作:
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 ;
从documentation开始:
但是,与存储例程一样,如果使用mysql程序定义执行多个语句的触发器,则需要重新定义mysql语句分隔符,以便可以在触发器定义中使用;语句分隔符。
关于mysql - 创建触发器时MySQL语法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48719029/