2012-08-03 81 views
2

在我正在构建的应用程序中,我使用了大量插入重复密钥更新。我的问题是,在我的应用程序中,我需要知道它是否是插入或更新,因此我的代码可以做出适当的决定。有谁知道我该如何测试?mysql插入重复密钥更新知道它是否发生了

我正在使用perl的DBI模块,如果有人知道特定的方法。谢谢!

回答

5

documentation

随着ON DUPLICATE密钥更新时,每行中的受影响的行值是如果 的行被插入作为一个新的行和2,如果一个现有的行被更新1。

因此,您应该能够检查INSERT .. ON DUPLICATE KEY查询的返回值;如果它是1,则插入该行,如果是2,则更新该行。

+0

太好了,谢谢! – srchulo 2012-08-03 17:56:34

+0

@srchulo没问题=] – newfurniturey 2012-08-03 17:59:41

+0

在Perl 10.1,MySQL 5.0的DBI 1.616上,它总是返回1,即使它进行了更新。 – 2013-03-01 20:22:32