2012-12-21 109 views
1

我有一个像下面这样的AreaUser表。Oracle更新查询忽略主约束

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

(区,用户)是一个PK

我执行一个查询类似下面投掷第一行更新

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

主键约束错误和第三排没有更新。如何忽略第一行错误并继续更新第三行 或 如何在更新该行之前查看表(区域,用户)组合是否已存在。

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

回答

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') 
+0

不客气。刚刚注意到我的User2应该是'user2',即明显的区分大小写。 –

+0

:)这很好。这只是我真实情景的一个例子。在我的真实场景中,用户实际上是userid,一个数字数据类型 – Jeevan