使用内部联接进行MySQL更新

时间:2014-06-28 19:02:57

标签: mysql triggers set inner-join outer-join

我有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

如果有人知道如何使其发挥作用,我将非常感激。

1 个答案:

答案 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;

|

相关问题