Oracle更新查询忽略主要约束

时间:2012-12-21 19:52:32

标签: oracle

我有一个像下面这样的表AreaUser。

area   user
------------
area2  user1
area2  user2
area3  user1

(区域,用户)是pk

我执行如下的查询

update areatable
set user = 'user2'
where user = 'user1'

第一行更新引发的主键约束错误,第三行未更新。如何忽略第一行错误并继续更新第三行 要么 如何在更新该行之前找到(区域,用户)组合是否已存在于表中。

希望我用这个例子清楚地说明了这个问题。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您需要NOT EXISTS,例如

Update AreaTable
   Set User = 'user2'
 Where User = 'user1'
   And Not Exists (Select 1
                     From AreaTable CheckAreaTable
                    Where CheckAreaTable.Area = AreaTable.Area
                      And CheckAreaTable.User = 'user2')