5

我将需要一个可以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

4

1 回答 1

4

检查受影响的行数:

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

如果您使用的是 JDBC,这是or调用的int返回值。update()execute()

所有框架都有将这个值传回给你的方法,例如 Hibernate 的Query.executeUpdate()返回这个int值。

于 2012-12-04T01:40:05.860 回答