1

以下のようなテーブル AreaUser があります。

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

(エリア、ユーザー) は pk です

以下のようなクエリを実行します

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

最初の行の更新で主キー制約エラーがスローされ、3 番目の行は更新されません。最初の行のエラーを無視して 3 番目の行の更新を続行するにはどうすればよいですか、または (area,user) の組み合わせがその行を更新する直前にテーブルに既に存在するかどうかを確認するにはどうすればよいですか。

この例で質問を明確に述べていただければ幸いです。助けてくれてありがとう。

4

1 に答える 1

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')
于 2012-12-21T19:59:41.003 に答える