2017-07-26 18 views
0

SQL Serverを使用しています。私は、結合を使って更新ステートメントを書いた。私はテーブルの1つの列を更新しようとしましたが、私の更新ステートメントは別のテーブルから値を削除します。 1つの列の値を更新していても、なぜそれが起こっているのか分かりません。SQL Server更新クエリの2つのテーブルの更新

update rs 
set rs.col1 = t.col2 
from table1 r 
join table2 rs on rs.Id = r.Id 
join @temp t on t.Id = rs.Id 

私はtable2col1値を更新しようとしていますが、それはcol1ためtable2の両方で値を更新し、table1

+2

SQL Serverの 'update'ステートメントは1つのテーブルのみを更新します。あなたが 'table2'にトリガーを持っていない限り、何かを誤解しています。 –

+2

これらのテーブルにトリガーがありますか? –

+0

私はそれらのテーブルにトリガーを持っていません。 – user3661407

答えて

0

に私はあなたが参加するとの問題を抱えていると思います。また、テーブルのエイリアスの名前を変更して、ステートメントをより明確にしました。

update t2 
set t2.col1 = t.col2 
from table1 t1 
    join table2 t2 on t2.id = t1.id 
    join @temp t on t.Id= t2.Id 
+0

私の参加に技術的な問題があるのですか、それとも命名問題ですか? – user3661407

+0

もう一度見てみると、技術的な問題はないと思ってください。私はユーザーPawek Tajsを見て、データに干渉している可能性のあるものがあるかどうかを調べます。 – SQLAndOtherStuffGuy

+0

これらの2つのテーブルの間に関係があるため、これがすべて起こっている可能性はありますか? – user3661407

0

カスケード規則は、テーブル上で利用可能でなければなりません。更新カスケードテーブルで使用可能なカスケードルールを削除します。

カスケードルールで1つのテーブルの列を更新する場合、別のテーブルから値を削除しています。カスケードルールをテーブルに適用したかどうかを確認してください。 カスケードルールがテーブルtable1とtable2の両方に適用可能な場合は、まずそのカスケードルールを削除し、再度更新を試みます。

+0

私はそれをチェックしました。テーブルに適用されるカスケード規則はありません。 – user3661407