0

我有两个表 stock 和 order ,我试图让触发器工作,以便在下订单后,订单数量会从库存数量字段中删除。

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

4

2 回答 2

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;
$$
于 2013-04-15T11:24:09.663 回答
0

有几个问题:

  1. order 是保留字,因此您需要在其周围使用反引号
  2. 你不需要使用变量@quantity
  3. 更新语句错误
  4. 分隔符和; 应该用空格隔开

尝试这个

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 ;
于 2013-04-15T11:27:10.647 回答