これは、ほとんどが好奇心の質問です。Microsoft SQL Serverのサブクエリを制限する
update table
set column1 = 1
where column2 in (1,2)
しかし、これは、サブクエリが複数の値を返したことをエラーで実行まま:私はちょうどテスト・データベース上で、私は次のクエリを持っていた状況を経験してきました。
ここで、複数のIDキーがないこと、または 'in'の値が一意であることを確認しました。すべての意図と目的のために、これは起こってはいけません。
データベースのLIVEコピーをチェックすると、同じクエリに問題はありませんでした。したがって、最終的に私の質問は次のようになります。
このようなシナリオを作成するMicrosoft SQL Serverの設定またはデータベース構造は何ができますか?
テーブルに更新トリガーがありますか?私はそれがしていることを推測しており、 'inserted'または' deleted'には1行だけがあると仮定しています。 –
だから、PK違反に遭遇する唯一の方法は、Column1が複合PKまたはPKそのものの一部である場合です。クエリはまっすぐに見えます:同じタプル内のcolumn2で値(1)または(2)を見つけたら、column1を更新して(1)に設定します。私はあなたのテストDBがあなたの生産が異なる開始レコードを持っていると推測しています。プロダクション値をテストDBにコピーして再度実行できますか? – Milan
@Milan「サブクエリが複数の値を返しました」から「PK違反」になったのはどうでしたか? – HABO