INSERT IGNORE - 如何插入?

时间:2012-12-04 01:39:06

标签: mysql sql

我将需要一个INSERT .. ON DUPLICATE KEY UPDATE(或INSERT IGNORE INTO)我的表的SQL查询。

我需要知道是否发生了更新实际,或者是否插入了新行。

这是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

1 个答案:

答案 0 :(得分:4)

检查受影响的行数:

  • 返回值1表示发生了INSERT
  • 返回值2表示发生了UPDATE

如果您使用的是JDBC,则这是intupdate()来电的execute()返回值。

所有框架都有一种方法可以将此值传递给您,例如Hibernate的Query.executeUpdate()会返回此int值。