0
我有以下SQL代碼通過比較兩個表中的數據將數據從一個表插入另一個表。目的地表中的PK是[bomItem], [bomRev], [bomEntry]
。插入語句以將數據從一個表插入另一個表
我想插入如果ItemID in source table = bomItem field in Dest. table
AND[rev](field in Source tbl)NOT=[bomRev](in destination tbl)
。
當我試圖運行該腳本,我收到以下錯誤
消息547,級別16,狀態0,46號線 INSERT語句衝突與外鍵約束「FK_MIBOMD_MIBOMH」。數據庫「MITESTCO」發生衝突,表「dbo.MIBOMH」。 該聲明已被終止。
USE [MITESTCO];
GO
INSERT INTO [MIBOMD]
([bomItem], [bomRev], [bomEntry], [partId], [qty],[lead])
SELECT [ItemID], [rev], [bomEntry], [partid], [qty],[lead]
FROM [assy]
WHERE [rev] IN (SELECT [bomRev] FROM [MIBOMH])
AND [ItemID] IN (SELECT [bomItem] FROM [MIBOMH])
AND [ItemID] IN (SELECT [ItemID] FROM [MIITEM])
AND [partid] IN (SELECT [ItemID] FROM [MIITEM]);
錯誤有沒有直接與你的數據庫的查詢,但設計結構做表。由於錯誤表示外鍵約束被違反,其名稱可能涉及附加表,「dbo.MIBOMD」與「dbo.MIBOMH」有關。也許你在這兩個(父/子)之間有一對多的表關係,並將子記錄添加到子項中,從而使連接的父ID爲NULL。 – Parfait
@Parfait謝謝!是的,我有一對多的關係,並且我在父母和孩子中擁有相同的數據/記錄,唯一的d/c是「rev」字段。父表中的主鍵是'bomRev'和'bomItem'。我如何解決這個問題你說Apeending但我不知道如何工作你能解釋我更多? – Kin
檢查你的約束:http://stackoverflow.com/questions/2499332/how-to-check-if-a-constraint-exists-in-sql-server – Parfait