我有3个表,产品,仓库和订单详情。当客户下订单时,它会将一个(或几个)产品ID放入订单明细表中。我试图做的是通过触发器减少仓库表中该产品的数量。我已经达到了这个查询,它选择了需要减少一个的特定数字,但是,我不能把它变成更新。我尝试了很多变化,但似乎都没有用,因为我无法使用(在使用UPDATE的地方选择****)
SELECT warehouse.kolicina
FROM warehouse
INNER JOIN order_details ON warehouse.productID = order_details.productID
WHERE warehouse.productID = (
SELECT order_details.productID
FROM order_details
LEFT OUTER JOIN warehouse ON ( warehouse.productID = order_details.productID )
ORDER BY order_details.orderID DESC
基本上我想做的是
after each insert on table order_details
UPDATE warehouse
SET quantity = quantity - 1
where warehouse.productID = last productID from table order_details
如果有人知道如何使其发挥作用,我将非常感激。
答案 0 :(得分:1)
您将创建更新后触发器并在那里进行更新。完整代码如下所示:
CREATE TRIGGER order_details_trigger AFTER INSERT ON order_details
FOR EACH ROW
BEGIN
UPDATE warehouse
SET quantity = quantity - 1
where warehouse.productID = new.productID;
END;
|