我将需要一个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
答案 0 :(得分:4)
检查受影响的行数:
1
表示发生了INSERT
2
表示发生了UPDATE
如果您使用的是JDBC,则这是int
或update()
来电的execute()
返回值。
所有框架都有一种方法可以将此值传递给您,例如Hibernate的Query.executeUpdate()
会返回此int
值。