冲突时跳过或更新要点
- INSERT IGNORE 遇唯一冲突静默跳过,不中断整批
- ON DUPLICATE KEY UPDATE 冲突时改为更新已有行
- 两都离不开唯一索引,没唯一约束就不会触发
- IGNORE 会吞掉其他警告,定位问题要看受影响行数
- 批量导入脏数据用 IGNORE 保流畅,但事后要核对漏了多少
- 更新的列用 VALUES(列) 引用本次要插的值
冲突时跳过或更新示例
-- 冲突就跳过
INSERT IGNORE INTO product (id, name, price)
VALUES (1, '键盘', 299.00);
-- 冲突就改成更新价格
INSERT INTO product (id, name, price)
VALUES (1, '键盘', 289.00)
ON DUPLICATE KEY UPDATE price = VALUES(price);
避坑提醒:INSERT IGNORE 会顺手忽略掉类型转换等警告,别以为插成功就全对,比对 affected rows 才算数。