2016-09-01 6 views
0

私は以下のようなSQL ServerのINSERT文があります。複数値ステートメントでSQL Serverの外部キーが競合していますか?

insert into foo(num, a, b) values 
(1, a, b), 
(2, a, b), 
... 
(9999, a, b); 

をしかし、エラー「FOREIGN KEY制約と競合INSERT文」があります。問題は、SQL Serverが、問題の値または行が正確に何であるかを教えてくれないことです。どのようにしてエラーが発生したのかをすばやく見つけることができますか?

+0

どの列に外部キーがあり、制約はどれですか? –

+0

問題のある行を細かくしたい場合は、挿入を別々の文に分割し、失敗した文を決定します。 –

答えて

1

これをSELECT文にすると、一致しない行を見つけることができます。 - しかし、あなたのように

select * 
from (
    values 
    (1, a, b), 
    (2, a, b), 
    ... 
    (9999, a, b) 
) t(num,a,b) 
where not exists (select 1 
        from other o 
        where o.id = t.a); 

select .. from (values)は、SQL Server 2012の以降が必要です:列aは、次のことが、他のテーブルに存在しない値が表示されますテーブルotherを参照すると仮定すると

そのタグを使用した場合は、そのタグを使用できるはずです。

+0

。 。コメントを削除しました。私は何とかユニークな制約に違反していると解釈しました。 –

関連する問題