用每行具有不同值的公式更新mysql行

时间:2018-10-04 06:08:00

标签: mysql

我有两个表:

表1:零件

  • id(主键)
  • 代码
  • 标题
  • 数量

表2:bill_items

  • id(主键)
  • bill_id
  • parts_id:引用表部件的主键
  • 数量

我想更新零件表-每次在表bill_items中创建一行时,要更新数量。零件表中的数量应按bill_items的数量减少。一口气可以对表bill_items进行N次更新。想使用单个INSERT .... ON DUPLICATE或UPDATE语句。

谢谢您的时间。

1 个答案:

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