gpt4 book ai didi

mysql - 更新行,如果更新失败则删除同一行

转载 作者:行者123 更新时间:2023-11-29 10:31:24 24 4
gpt4 key购买 nike

我有一个汇总项目及其类别的表格。一个项目可以有多个类别。以下是简化的架构和示例数据:

表名称:外部引用,(itemID, catID) 定义为主键

itemID | catID
-------+-------
4059 | 159
4059 | 219

我还有一个类别合并功能。执行此操作时,我还将源类别中链接的产品移动到目标(合并)类别。为了将项目从类别 159 移动到类别 219,我使用如下 SQL:

UPDATE `xref` SET `catID` = 219 WHERE `catID` = 159

但是更新失败,因为已经存在 4059-219(PK 约束)。

期望的结果是

itemID | catID
-------+-------
4059 | 219

我无法在数据库上使用存储过程或函数,但可以在我的应用程序中实现所需的步骤。

  • 有没有办法在 UPDATE 查询失败时删除行?
  • 如何编写一个查询来“预测”将失败的 UPDATE 查询的行?类似于“返回同时具有 catID 219 和 159 的 itemID”。 SELECT * FROM xref WHERE catID IN (159, 219) GROUP BY itemID HAVING COUNT(*) >= 2 是正确的方法吗?

最佳答案

我无法使用@JNevill 的方法,因为我事先不知道受影响的 itemID。但这给了我这个两步解决方案的想法。

UPDATE IGNORE `xref` SET `catID` = 219 WHERE `catID` = 159
DELETE FROM `xref` WHERE `catID` = 159

感谢所有其他答案/评论。

关于mysql - 更新行,如果更新失败则删除同一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47356760/

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