|
|
1
2
通过更改主键的一部分,您违反了要求#3。 我认为最好创建一个新表,填充它,然后删除约束,删除原始表,并将新表重命名为所需的名称(当然,然后重新应用原始约束)。根据我的经验,这让你有机会在“上线”之前查看“新”数据。 分享和享受。 |
|
|
2
1
你可以用 MERGE 如果您至少在SQL 2008上。 否则,您将不得不选择要建立的标准 合并的\u产品\u id您想要加入,哪些不需要:
请注意,如果多个并发请求正在运行合并逻辑,则这是不安全的。 |
|
3
1
我不能
如果你是
|
|
|
4
0
在没有看到您的数据的情况下,我相信您的分析是正确的-整个集合被更新,然后提交失败,因为它会导致违反约束。在某些更新的“部分提交”之后,不会重新评估EXISTS。 我认为您需要更精确地定义关于根据合并的产品id将多个产品更改为同一产品的规则,然后在查询中明确这些规则。例如,您可以排除属于该类别的任何产品,并使用适当的查询进一步排除不存在的产品。 |
|
|
5
0
关于更新失败的原因,我认为你是正确的。若要解决此问题,请在公司产品表上运行删除查询,以删除将应用相同合并产品id的额外产品id。 这里是一个什么样的查询可能是刺刀
--作为对评论的回应,增加了解释--
如果您对此运行更新,它将尝试将第二行和第三行更改为product id 20,并且将失败。如果您运行我建议的delete,它将删除第三行。删除和更新后,表将如下所示:
|
|
|
6
0
试试这个:
|
|
John Beasley · 更新一定数量记录的连续日期 1 年前 |
|
OcMaRUS · PostgreSQL:意外更新数据库中的所有记录 2 年前 |
|
|
Community wiki · 这个MySQL语句出了什么问题? 3 年前 |
|
|
Andrew · 如何根据字母排序顺序设置int值 8 年前 |
|
|
BCH · 从Select更新-语法和概念检查(mySQL) 8 年前 |