mysql event if语句end if error

kupeojn6  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(383)

尝试创建重置 soldout 状态(表示为 1 ).
我试图创建的逻辑是一个简单的if语句。
如果 soldout = 1 以及 Quantity > 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

有人能告诉我为什么这样不行吗?
kuhbmx9i

kuhbmx9i1#

这应该行得通,您缺少一部分语法:

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;

相关问题