一般来说,我对 MySQL 触发器和过程代码很陌生,所以这对我来说可能是一个愚蠢的错误。这是不起作用的代码。
CREATE TRIGGER add_to_cart
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
SET @status = ‘S’;
SET @user = NEW.user_id;
SET @order = NEW.order_id;
SELECT count(*) INTO @shipped_count
FROM orders
**WHERE (user_id = @user) AND (order_status = @status);**
SELECT MAX(priority) INTO @max FROM cart;
IF @max = 'NULL' THEN
SET @max = 0;
END IF;
SET @priority = @max + 1;
INSERT INTO cart VALUES (@user, @order, @priority);
**INSERT INTO log VALUES (@count, @user);**
END $$
触发器按预期工作,直到我在 SELECT count(*) INTO shipping_count 中包含 WHERE 子句。我可以计算订单表中的所有记录,但是当我尝试指定某些类型的记录时它不起作用。
此外,粗体的“INSERT INTO log”也由于某种原因而失败,而完全相同的语法适用于其正上方的 INSERT。
帮助!谢谢。我一无所知。