gpt4 book ai didi

mysql - On Duplicate Key Update 不会更新,但会抛出重复项错误

转载 作者:可可西里 更新时间:2023-11-01 07:02:35 25 4
gpt4 key购买 nike

我有一个包含两列主键的表 (key1,key2)

这是我的查询

INSERT INTO mytable (key1, key2, val1, val2) 
VALUES (:k1, :k2, :v1, :v2)
ON DUPLICATE KEY UPDATE val1 = val1 + :v1, val2 = val2 + :v2

现在,当我插入带有重复键的行时,我收到此错误消息:

Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '157-433' for key "PRIMARY" in ...

为什么它不只更新现有的 (157,433) 行?

最佳答案

您不能在一个查询中多次引用同一个占位符。 MySQL 对此有一个内置的解决方案——如果您在 ON DUPLICATE KEY 子句中使用 VALUES(colname),它指的是本应存储在如果它不是重复的列。所以使用:

INSERT INTO mytable (key1, key2, val1, val2)
VALUES (:k1, :k2, :v1, :v2)
ON DUPLICATE KEY UPDATE val1 = val1 + VALUES(val1), val2 = val2 + VALUES(val2)

不过,我不确定为什么它会导致有关创建重复条目的错误。

关于mysql - On Duplicate Key Update 不会更新,但会抛出重复项错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24476121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com