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