2017-12-14 12 views
0

私は、テーブルをループして値を別のタブに挿入する必要があるスクリプトを作成しています。トランザクションを強制する

問題は、新しいテーブルにデータを挿入する前にデータをリンクするときに重複した値が発生することです。

私はこれをwhileループでやっていますが、SQLServerがメモリ内のすべての挿入ステートメントを構築していて、スクリプトの終了時にそれらを実行するように見えます。

私は正しいと感じていますか?その場合、SQLServerがコード内で発生したときに個々のトランザクションを個別に実行するように強制する方法はありますか?

+3

SQL Serverは、通常、すべての 'insert'文の後でコミットします。 –

+1

なぜデータを挿入するためにループを使用していますか?あなたがしていることは、それが単一の挿入ステートメントでなければならないようなサウンドです。あなたのコードを共有できますか? –

+0

私はwhileループの中にいるか、または文がトランザクションと見なされないと仮定します。つまり、私のコード(論理)が問題ですか?私はむしろコードを共有し、問題を自分で修正し、問題の可能性があるものを調査し、照明のプロセスを経て学ぶことによって学びます。 –

答えて

0

一般的に言えば(必ずしもそうではありませんが)、重複したレコードを受け取ると、ロジックに問題があります。つまり、を選択して重複を削除するを選択してください。

Insert into tablec (a, b, c) 
select distinct tablea.a, tablea.b, tableb.c 
    from tablea 
left outer join tableb on tablea.a = tableb.b 
関連する問題