gpt4 book ai didi

mysql - Insert ... on duplicate key update nothing 使用MySQL

转载 作者:可可西里 更新时间:2023-11-01 06:31:56 25 4
gpt4 key购买 nike

我的问题是我在一张表上有多个唯一键。

  1. Insert ignore 不是一个选项,因为它会抑制错误。
  2. MySQL 不支持语句外的任何类型的条件(例如 if (cond) then insert else don't insert)
  3. 存储过程不是一个选项(我唯一可以使用 if/else 语句的地方)
  4. 在重复键上可能会用新值更新键,但我希望唯一键不会更改,以防唯一约束失败。

所以唯一的选择是重复只是不更新​​任何东西。有什么办法可以做到这一点?或者还有其他选择吗?

最佳答案

如果您希望 ON DUPLICATE KEY UPDATE 实际上不执行任何操作,只需将列值设置为现有值即可。与使用 IGNORE 关键字不同,外键约束等其他冲突会冒泡,但冲突时不会更改任何值。

INSERT INTO table (value1, value2) VALUES ('1', '2')
ON DUPLICATE KEY UPDATE value1 = value1;

如果要确保在发生冲突时不会更改有效数据,可以向表中添加一个包含任意数据的列,并将其用于 UPDATE 语句。

如果您希望将所有逻辑保留在您的应用程序中而不是数据库中,第三种选择是在运行您的INSERT/UDPATE SELECT 语句来检查潜在的冲突声明。

虽然排除了您的方案,但存储过程也能够在单个数据库调用中提供此逻辑。

关于mysql - Insert ... on duplicate key update nothing 使用MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13041023/

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