2012-12-25 77 views
1

我正在開發一個產品組合產品的集成部分,我在SQL Server 2008中預裝了數據庫。我無法直接插入或更新數據庫,我可以通過在本產品開發人員提供的API。獲取錯誤:INSERT語句與FOREIGN KEY約束衝突

每當我將通過API的特定交易類型,我收到錯誤消息 -

The database 'usp_Financial_KernelComponents_Index_Insert_Batch_5' command failed. The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Fixings_id_Index_fixingsId". The conflict occurred in database "Portfolio_new", table "dbo.Financial_Shared_Fixings", column 'id'.

我怎麼能解決這個錯誤,或者這可能是此錯誤的可能原因。請建議

+1

@JW相同的信息。這可能是另一種方式:他在表中插入一個ID爲* not *的行。 – dasblinkenlight

+1

@dasblinkenlight你是對的! ':D'我想我現在需要睡覺。哈哈順便說一下聖誕快樂。 –

+1

插入值時外鍵約束失敗和錯誤消息可能重複(http:// stackoverflow。com/questions/33213347/foreign-key-constraint-failure-and-error-mesage-when-inserting-values) –

回答

3

您正嘗試在外鍵列中不存在的外鍵列中插入帶有值的記錄。

2

外鍵約束意味着一列或一組列的值必須出現在另一個表的行中,通常作爲其主鍵。這裏有一個例子:

create table country (id int not null, name varchar(100)) 
create table city(id int not null, country_id int, name varchar(100)) 

如果你設置了一個外鍵約束上city要求country_id存在於country表,試圖插入一個city帶有無效country_id將導致違反外鍵約束。

在你的情況下,API可能需要一組值,其中一個值必須是某種類型的ID(或通過它可以檢索ID的輔助鍵)。當您將一個無效的ID傳遞給這樣的API時,會觸發外鍵約束違規。

0

用最簡單的術語來說,在插入父行之前插入一個「子」行

在您插入子行的時候,違反了子父級(即外鍵)約束 - 子級的父級似乎不存在。

要修復,請將插入順序顛倒爲父項,然後子項(ren)。

-1

之前子表u需要在父表(即)來插入其中參考列下文稱到

1

發生此錯誤whern您要插入的外鍵的值表中插入記錄列,該值不存在於其父表中。例如,您正試圖在Order表中將值X插入到CustomerId中,該值在Customer表中不存在。發生此錯誤是因爲我們需要有一個良好的參照完整性策略。所以你唯一需要做的就是檢查你的新值(你將它們插入到表中)以發現是否有任何有損該規則的值。

請檢查以下問題,你會發現這個錯誤的 Foreign Key constraint failure and error message when inserting values

+1

如果這個問題是鏈接問題的完全重複(也可以用同樣的答案來解決這兩個問題) ,那麼請將其標記爲一個副本,而不是留下對此效果的答案。如果它不是重複的,請留下一個完整的答案,而不是隻有鏈接的答案。 – josliber

相關問題