我有两个表:
表1:零件
表2:bill_items
我想更新零件表-每次在表bill_items中创建一行时,要更新数量。零件表中的数量应按bill_items的数量减少。一口气可以对表bill_items进行N次更新。想使用单个INSERT .... ON DUPLICATE或UPDATE语句。
谢谢您的时间。
答案 0 :(得分:1)
在这种情况下,我认为使用触发器更好:
DELIMITER $$
CREATE
TRIGGER `bill_items_after_insert` AFTER INSERT
ON `bill_items`
FOR EACH ROW BEGIN
UPDATE parts set quantity = quantity - NEW.qty WHERE id = NEW.parts_id;
END$$
DELIMITER ;
我建议您也触发UPDATE和DELETE,以确保数据的一致性。
已更新
根据您的评论,可以使用常规插入和使用事务更新一致性数据:
START TRANSACTION;
INSERT INTO bill_items (bill_id, parts_id, qty) VALUES (your_bill_id,your_parts_id,your_qty);
UPDATE parts SET quantity = quantity - your_qty WHERE id = your_parts_id;
COMMIT;