我将需要一个SQL查询,将INSERT .. ON DUPLICATE KEY UPDATE
(或INSERT IGNORE INTO
)我的表。INSERT IGNORE - 如何判断是否插入?
我需要知道是否更新实际上发生或者插入了新行。
一个很好的参考是这个SO answer,不幸的是没有采取行动的答案。
至于现在,我使用INSERT ..对重复密钥更新:
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
[文档中]埋(http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html) - 一个新的插入将返回1个受影响的行,而更新将return 2.如果忽略,INSERT IGNORE'将返回0,我相信。 –