我希望 INSERT 将新记录存入我的数据库中,否则它将 更新 那些现有记录。
我在Stackoverflow上搜索过,但结果都没有解决我的问题。
SCENARIO
购买明细表中有很多记录。因此,唯一唯一ID 仅为 purchase_id 。
我想更新具有相同 product_id 的金额。请参阅表格。
以下是我迄今为止尝试过的SQL查询。
INSERT INTO `purchase_details` (`product_id`, `amount`)
VALUES (1583, 0)
ON DUPLICATE KEY UPDATE amount = 0
查询显示 1行受影响。
但总计有 146行,这意味着此查询无效。
问题
答案 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 ;