mysql insert ... on duplicate key update返回插入的行id

时间:2012-11-28 12:55:07

标签: mysql

好的问题不是关于如何返回ID,而更像是如何跳过它...我有一种情况,我使用last_insert_id()来获取最后一个插入行的id,但我想得到如果没有插入行,则为零。问题如下:

  • 我插入...更新一些记录:因为新插入行而返回所有ID
  • 然后我重复这个过程:这次不返回ID。 耶!这正是我想要的
  • 我更改了一个列值并重复了这个过程:但是现在为我更改了列值的行返回了ID。这让我很生气。如果它没有插入任何东西,我不希望mysql返回ID

总结一下:

  • 插入新记录时:返回ID
  • 插入相同记录时:不返回ID
  • 更新值时:返回更新行的更新ID:(

有解决方法吗?

我知道这是因为mysql可能不会对相同的记录执行更新,但仍然......我肯定想知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

您应该能够检索插入的行数并使用它来确定是否插入了任何内容。如果您正在使用“原始”查询(即没有可能提供插入行数的API),看起来ROW_COUNT()可能会提供您想要的内容。