3
我正在写一个SQL(Oracle)来更新另一个表中的值的表。但是由于存在2列唯一约束,所以更新总是失败。它是这样的:SQL:如何在更新时确定并跳过唯一约束?
Table A
- A_1
- A_2
- A_3
(There is a unique constraint for A_1 + A_3)
Table B
- B_1
- B_2
这里是我当前的SQL:
UPDATE A a
SET a.A_1 =
(SELECT b.B_1
FROM B b
WHERE a.A_2 = b.B_2
)
AND EXISTS
(SELECT b.B_1
FROM B b
WHERE a.a.A_2 = b.B_2
)
我想跳过违反唯一约束的行,但我不知道该怎么做。请指教。谢谢!
谢谢您的回答。我明白了。我正在尝试它。但是我看到一个运行时间太长的问题。 B桌非常大。你有什么想法来改进它吗?谢谢! – Xiezi
原谅我的天真,但我会先看看你为什么要做更新,但随意忽略行,因为他们会失败的约束。在我的书中,一个约束失败的事实表明你在第一个地方做错了事情...... –
你的观点对我来说也是有意义的。这实际上是一个从表格到另一个表格的数据回填。 B表是将数据转发到A表的中间件。现在我们将它合并到一张表中。由于我们为A未添加一些新功能,A和B之间可能存在冲突数据。这是导致我们新功能缺陷的原因。我们现在要去讨论它。 – Xiezi