INSERT或UPDATE如果存在 - 为什么我插入2行而不是1?

时间:2011-10-18 12:20:52

标签: mysql insert

如果我的数据库存在操作,我想插入并更新。

我的表格'A'被定义为PRIMARY。

A int
B VARCHAR 20
TEST int

为什么此查询会返回'2 row(s)inserted'而不是1?

insert into test1 (A, B, TEST) 
values(2, "A", 19) 
on duplicate key update 
A=values(A), B=values(B), TEST=values(TEST)

1 个答案:

答案 0 :(得分:2)

  

使用ON DUPLICATE KEY UPDATE,如果将行作为新行插入,则每行的受影响行值为1;如果更新现有行,则每行受影响的行值为2.

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

这被认为可以区分现有行的全新行与更新