MySQL 事件 If 语句 END IF 错误

标签 mysql

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

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

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

soldout 更新为 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/42768482/

相关文章:

php - 邮政编码半径搜索

php - 循环不重复表列中的值

php - 从多个表中显示列

php - 分页问题

mysql - 根据两个单独表中的条件从一个表中选择行

mysql - 我可以将多个准备好的语句放入 MySQL 的一个存储过程中吗?

php - mysql_real_escape_string() : Access denied in codeigniter

mysql - 如何打印 mysql 数据库中所有表的所有字段?

php - 从 MYSQL 表和 Echo 内容中检索行 - PHP

php - MySQL 从数据库检索不检索多行