MySQL - 如果存在,则插入多个记录或更新多个记录

时间:2016-02-04 04:07:35

标签: mysql

我希望 INSERT 将新记录存入我的数据库中,否则它将 更新 那些现有记录。

我在Stackoverflow上搜索过,但结果都没有解决我的问题。

表格结构 enter image description here

SCENARIO

购买明细表中有很多记录。因此,唯一唯一ID 仅为 purchase_id

我想更新具有相同 product_id 金额。请参阅表格。

enter image description here

以下是我迄今为止尝试过的SQL查询。

INSERT INTO `purchase_details` (`product_id`, `amount`)
VALUES (1583, 0)
ON DUPLICATE KEY UPDATE amount = 0

查询显示 1行受影响

但总计有 146行,这意味着此查询无效。

问题

  1. ON DUPLICATE KEY UPDATE 仅允许插入一个会导致UNIQUE索引或PRIMARY KEY重复值的行

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,您希望update表格的其他现有行与新提供的product_id值相同amount

由于product_id不是unique表中的purchase_details列,因此不会将此情景视为ON DUPLICATE KEY UPDATE条件。 Ergo,1排受影响。

要实现您的目标,您需要CREATE TRIGGER

像这样:

DELIMITER $$
CREATE TRIGGER ins_check 
AFTER INSERT ON purchase_details
FOR EACH ROW
BEGIN
    UPDATE purchase_details
       SET amount = NEW.amount
     WHERE product_id = NEW.product_id;
END;$$
DELIMITER ;