3

我正在编写一个 SQL (Oracle) 来使用另一个表中的值更新一个表。但由于有 2 列唯一约束,更新总是失败。它是这样的:

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
    )

我想跳过违反唯一约束的行,但我不知道该怎么做。请指教。谢谢!

4

1 回答 1

0

您可以AND NOT EXISTS在最后放置一个,检查新的约束值(就像更新之后一样):

...
AND NOT EXISTS
(
    SELECT 1
    FROM A checkA
    WHERE checkA.A_1 = (SELECT b.B_1 FROM B b WHERE a.A_2 = b.B_2)
    AND checkA.A_3 = a.A_3
)
于 2013-01-23T18:31:30.010 回答