2016-09-01 67 views
0

我有一個SQL Server INSERT一句話如下:多值語句中的SQL Server外鍵衝突?

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

但有一個「INSERT語句衝突與外鍵約束」的錯誤。問題是SQL Server不會告訴我問題的確切值是什麼。我怎樣才能快速找到錯誤的價值?

+0

哪個列是外鍵,哪個是約束? –

+0

如果您想罰款問題的線路,然後將插入拆分成單獨的語句,並確定失敗。 –

回答

1

您可以將其變成SELECT語句來查找不匹配的行。

假設列a引用的表other下面會顯示不存在在其他表中的值:

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或更高版本 - 但你已經使用了該標籤,您應該可以使用該標籤。

+0

。 。我刪除了評論。我以某種方式解析它違反了一個獨特的約束。 –