[英]MYSQL Trigger Not Working. Not sure why
我正在尝试为名为quailmiles的表创建一个触发器。 当总里程达到某个数字时,我希望更改人员状态(在同一张表中是一个属性)。 由于某种原因,我的代码无法正常工作。
该错误当前显示为:
#1064-您的SQL语法有误; 请查看与您的MySQL服务器版本相对应的手册,以获取在第9行的''附近使用的正确语法。
delimiter $$
CREATE TRIGGER status_update
AFTER UPDATE ON quailmiles
FOR EACH ROW BEGIN
IF (total_miles > 2000) THEN
UPDATE quailmiles SET status = 'gold';
ELSE IF (total_miles > 4000) THEN
UPDATE quailmiles SET status = 'platinum';
END IF;
END $$
delimiter;
您的逻辑是倒退。 您需要在2000
之前针对4000
测试:
delimiter $$
CREATE TRIGGER status_update
BEFORE UPDATE ON qualmiles
FOR EACH ROW
BEGIN
IF (NEW.total_miles > 4000) THEN
SET NEW.status = 'platinum';
ELSEIF (NEW.total_miles > 2000) THEN
SET NEW.status = 'gold';
END IF;
END $$
delimiter;
我还将语法更改为“更新之前”的触发器。 另外,我将其命名为“ qualmiles”。 “ Quailmiles”听起来很有趣。
我认为您需要ELSEIF
而不是ELSE IF
。 (删除空间。)
返回错误是因为第二个IF
没有以END IF
结尾。
另外,您实际上并不想针对同一表发出UPDATE。 您希望在BEFORE UPDATE触发器中处理此问题,并设置列的值。
例如
CREATE TRIGGER status_update
BEFORE UPDATE ON quailmiles
FOR EACH ROW
BEGIN
IF (NEW.total_miles > 4000) THEN
SET NEW.status = 'platinum';
ELSIF (NEW.total_miles > 2000) THEN
SET NEW.status = 'gold';
END IF;
END$$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.