MySQL 事件 If 语句 END IF 错误

标签 mysql

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

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

如果soldout = 1 AND Quantity > 0 在同一行

售罄更新为0

这是我的事件

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;

这会导致错误,第 9 行的“END IF”

#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

谁能告诉我为什么这不起作用吗?

最佳答案

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

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; 

关于MySQL 事件 If 语句 END IF 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863367/

相关文章:

php - 使用准备好的语句删除之前检查值是否存在

php - 构建比较字符串相似度的推荐系统

mysql - SQL查询以获取特定 parent 的 child 的平均值

mysql - SQL 查询将同一个表与 SUM 连接起来,直到每个返回的行

php - 如何在 bootstrap 缩略图 3 列 View 中显示数据库中的图像?

php - 有没有办法从 SQL 查询返回绑定(bind)结果?

mysql - 如何删除 mysql 中除少数列之外的所有列?

php - 在 WordPress 存档下拉列表中显示嵌套几个月内的帖子和计数器

php - 如何在用户个人资料中显示仅由用户制作的内容? PHP/MySQL

mysql - 谁对给定文本的推文最多?