【发布时间】:2024-08-27 16:35:02
【问题描述】:
我将需要一个 SQL 查询来 INSERT .. ON DUPLICATE KEY UPDATE(或 INSERT IGNORE INTO)我的表。
我需要知道是否发生了更新实际上或者插入了一个新行。
这个SO answer 是一个很好的参考,不幸的是,所采取的行动没有答案。
至于现在我正在使用 INSERT .. ON DUPLICATE KEY UPDATE:
INSERT INTO `tbl` (`CLIENT_ID`, `COMP_ID`, `DATETIME`) VALUES (12334,32,NOW())
ON DUPLICATE KEY UPDATE
`COMP_ID`=VALUES(`COMP_ID`), `DATETIME`=VALUES(`DATETIME`);";
并检查affected_rows 值。
如果affected_rows 等于1,意味着-> 插入新行
如果affected_rows 等于2,意味着-> 行更新
如果出现重复,我不希望发生任何变化,但我想知道是否存在重复。
使用 MYSQL
【问题讨论】:
-
Buried in the documentation - 新插入将返回 1 个受影响的行,而更新将返回 2。如果忽略,
INSERT IGNORE将返回 0,我相信。