多次更新 - 可能的错误

时间:2015-11-17 15:19:27

标签: mysql

我正在编写一个函数来同时执行多个更新。

我受到了here的示例代码的启发:

INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12)
ON DUPLICATE KEY UPDATE Col1=VALUES(Col1),Col2=VALUES(Col2);

但我的功能输出是这样的:

INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12)
ON DUPLICATE KEY UPDATE id=VALUES(id), Col1=VALUES(Col1), Col2=VALUES(Col2);

所以我担心我的输出包含更新之间的主键字段。

我尝试了代码并且似乎运行良好(包括主键) 这会产生我还没有遇到的错误吗? 我是否必须从查询的第二部分删除主键?

1 个答案:

答案 0 :(得分:1)

如果id = VALUES(id)是主键并且是表中唯一的唯一键,则不必担心id。在这种情况下,id用于匹配,因此值不会发生变化。

如果桌面上有多个唯一键,那么这可能是一个问题。如果您的数据是:

id    col1    col2
 2       1       1

您在(col1, col2)上有一个唯一键,然后当您插入(1, 1, 1)时,值将更改为:

id    col1    col2
 1       1       1