我有两个表:
表 1:部件
- id(主键)
- 代码
- 标题
- 数量
表 2:bill_items
- id(主键)
- 账单 ID
- parts_id:指表部件的主键
- 数量
每次我在表 bill_items 中创建一行时,我想更新零件表 - 数量。零件表中的数量将减少 bill_items 的数量。一次性可能会对表 bill_items 进行 N 次更新。想要使用单个 INSERT....ON DUPLICATE 或 UPDATE 语句。
感谢您的宝贵时间。
最佳答案
我认为对于这种情况最好使用触发器:
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;
关于mysql - 使用每行具有不同值的公式更新 mysql 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52640070/