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不會告訴我問題的確切值是什麼。我怎樣才能快速找到錯誤的價值?
我有一個SQL Server INSERT一句話如下:多值語句中的SQL Server外鍵衝突?
insert into foo(num, a, b) values
(1, a, b),
(2, a, b),
...
(9999, a, b);
但有一個「INSERT語句衝突與外鍵約束」的錯誤。問題是SQL Server不會告訴我問題的確切值是什麼。我怎樣才能快速找到錯誤的價值?
您可以將其變成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或更高版本 - 但你已經使用了該標籤,您應該可以使用該標籤。
。 。我刪除了評論。我以某種方式解析它違反了一個獨特的約束。 –
哪個列是外鍵,哪個是約束? –
如果您想罰款問題的線路,然後將插入拆分成單獨的語句,並確定失敗。 –