2012-12-21 130 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