【发布时间】:2013-08-31 13:07:02
【问题描述】:
这是我以前的question。我解决不了问题。我更新了我的代码,并且间接使用了GROUP BY。但同样的问题显示。子查询返回重复值。其实我做了一个TRIGGER,所以我想如果show trigger,就会明白了
--
-- Triggers `product_purchases`
--
DROP TRIGGER IF EXISTS `change_stock_when_purchases`;
DELIMITER //
CREATE TRIGGER `change_stock_when_purchases` AFTER INSERT ON `product_purchases`
FOR EACH ROW BEGIN
DECLARE X INTEGER;
SET X = (SELECT product_size FROM product_stock WHERE product_id = NEW.product_id );
IF NEW.product_size =X THEN
UPDATE
product_stock as S1
INNER JOIN
(
SELECT
S.product_stock_id,I.quantity
FROM
product_stock AS S
INNER JOIN
product_purchase_item AS I
ON
S.product_id=I.product_id AND S.product_size=I.product_size
INNER JOIN
product_purchases AS P
ON
I.product_purchase_item_id=P.product_purchase_item_id
WHERE
P.product_purchase_id=NEW.product_purchase_id
GROUP BY
S.product_stock_id
)
AS M
ON
S1.product_stock_id=M.product_stock_id
SET
S1.product_size_quantity=S1.product_size_quantity+M.quantity;
ELSE
INSERT INTO
product_stock (product_id,product_size,product_size_quantity)
SELECT
product_id,product_size, quantity
FROM
product_purchase_item
WHERE
product_purchase_item_id=NEW.product_purchase_item_id;
END IF;
END
//
DELIMITER ;
在product_stock 上更新相同的product_id 的不同product_size 时出现问题
【问题讨论】:
-
一些示例数据会有所帮助。一个问题 - 在你的内部连接 where 子句应该包含 product_too?即像 P.product_purchase_id = NEW.product_purchase_id AND s.product_id = NEW.product_id。希望这会有所帮助
-
@AndaIancu 我还添加了 S.product_id=NEW.product_id AND S.product_size=NEW.product_size 但同样的问题
-
考虑提供表架构和示例数据。它可能会大大提高您获得所需答案的机会。
-
看到这个question
标签: mysql sql triggers sql-update