MYSQL后插入触发器来更改字段值

时间:2013-04-15 11:10:44

标签: mysql sql triggers

我有两个表库存和订单,我试图使触发器工作,以便在订单中放入订单后,数量从库存数量字段中取出。

DELIMITER $$
CREATE TRIGGER stock_update 
AFTER INSERT ON order
FOR EACH ROW
BEGIN
SET @quantity = NEW.quantity 
UPDATE stock s;
SET s.quantity = OLD.quantity - NEW.quantity
FROM stock s, order o
WHERE s.ID_stock = o.ID_stock;
END;
$$
DELIMITER;

但我只是得到错误号1064

2 个答案:

答案 0 :(得分:0)

我不太确定它会起作用,因为我需要表定义才能测试它。 在每种情况下,您都应删除FROM子句以及最后一行DELIMITER;。您 也应该用分号结束行SET @quantity = NEW.quantity

DELIMITER $$
CREATE TRIGGER stock_update 
AFTER INSERT ON order FOR EACH ROW
BEGIN
    UPDATE stock s;
     SET s.quantity = OLD.quantity - NEW.quantity
    WHERE s.ID_stock = NEW.ID_stock;
END;
$$

答案 1 :(得分:0)

有几个问题:

  1. order是一个保留字,因此你需要使用它后面的刻度线
  2. 您不需要使用变量@quantity
  3. 更新声明错误
  4. DELIMITER和;应该用空格分隔
  5. 试试这个

    DELIMITER $$
    CREATE TRIGGER stock_update 
    AFTER INSERT ON `order`
    FOR EACH ROW
    BEGIN
    UPDATE stock s 
       SET s.quantity = s.quantity - NEW.quantity
     WHERE s.ID_stock = NEW.ID_stock;
    END $$
    DELIMITER ;