MySQL事件如果语句END IF错误

时间:2017-03-13 16:17:26

标签: mysql

尝试创建一个重置soldout状态的MySQL事件(表示为1)。

我试图创建的逻辑是一个简单的IF语句。

如果soldout = 1Quantity> 0位于同一行

更新soldout0

这是我的活动

CREATE EVENT soldoutreset
ON SCHEDULE EVERY 5 MINUTE
DO
IF db.Inventory.soldout = 1
AND db.Inventory.Quantity > 0 THEN
UPDATE db.Inventory SET soldout = 0
WHERE soldout = 1 AND Quantity > 1
END IF;

这导致错误'END IF' at line 9

#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 'END IF' at line 9

有人能说出为什么这不起作用吗?

1 个答案:

答案 0 :(得分:3)

这应该有效,你缺少语法的一部分:

DELIMITER |

CREATE EVENT soldoutreset
ON SCHEDULE EVERY 5 MINUTE
    DO
    BEGIN
        IF db.Inventory.soldout = 1 AND db.Inventory.Quantity > 0 THEN
            UPDATE db.Inventory SET soldout = 0
            WHERE soldout = 1 AND Quantity > 1;
        END IF;
    END |

DELIMITER ;

<强>更新

如果事件未按预期运行,可能是因为事件调度程序已关闭。它可以启用:

SET GLOBAL event_scheduler = ON;