2017-05-15 21 views
1

特定の行を含むデータが1つあります。これらの行をすべて元のデータベーステーブルに挿入する必要があります。私はSQL Serverで挿入を挿入している間にSQLエラー例外を無視します

insert into tbl_user select * from #tblExcelData 

#tblExcelData以下のようにクエリを書かtbl_userに挿入しようとしている複数の行が含まれていました。

しかし、1行の外部キー例外による挿入が発生した後、挿入が停止されます。

他の行に対してこの挿入を続行します。例外の理由である不完全な行は挿入されず、他の行は続行する必要があります。

これを行う方法はありますか?

+0

あなただけのtbl_userに既にあるものを除外するために、クエリを少し変更することができます。 –

+0

TSQLステートメントはアトミックです。ステートメントが成功し、適切な行がすべて影響を受けるか、何も影響を受けません。このレベルの制御が必要な場合は、カーソルを使用できます。 SSISは別のオプションで、Excelファイルからテーブルに行をロードし、エラーを個別に処理できるようにします。いろいろなタイプのエラーが考えられることに留意してください。外部キーの問題が唯一のものであると仮定するのは安全ではありません。 – SMor

答えて

3

私が知る限り、あなたはできません。 DML文は完全に実行されるか、まったく実行されません。エラーの場合は、DML文はまったく実行されません。

可能なことは、のデータのみを選択することです。以下のような

何か:

insert into tbl_user 
select * 
from #tblExcelData x 
inner join tbl_with_FK y 
     on y.PK = x.FK 
関連する問題