通过限制SELECT数据来解决外键约束问题

时间:2014-11-19 01:04:59

标签: sql-server primary-key

我正在将数据从SOURCE复制到DEST。

两者都是结构相同的数据库,供同一软件使用。

我目前正在使用的表格在ITEM_CODE和VEND_CODE

上有PK

源有各种供应商代码,包括100004

目的地需要将100004设置为VEND代码。

我的计划只是将来自SOURCE的行与VEND_CODE设置为100004

我写了以下内容失败了:

INSERT DEST.dbo.ITEM_REPLENISH_VENDOR(
[ITEM_CODE],[VEND_CODE],[PRIMARY_VENDOR],[PURCHASE_MEASURE],
[STD_COST],[LAST_COST],[EOQ],[VENDOR_PART_NO],[LEAD_TIME],[COST])
SELECT s.[ITEM_CODE],s.[VEND_CODE],'T','EA','0','0','0','0','0', '0' 
FROM SOURCE.dbo.ITEM_REPLENISH_VENDOR s 
LEFT OUTER JOIN DEST.dbo.ITEM_REPLENISH_VENDOR d
ON (d.ITEM_CODE = s.ITEM_CODE) -- AND (d.VEND_CODE = s.VEND_CODE)
WHERE d.ITEM_CODE IS NULL AND s.[VEND_CODE] = '100004'

ERROR:

Msg 547, Level 16, State 0, Line 2 
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_ITEM_REPLENISH_VENDOR_ITEMS". 
The conflict occurred in database "DEST", table "dbo.ITEMS", column 'ITEMNO'.
The statement has been terminated.'

我认为我的语法错误是因为我完成了脚本。

1 个答案:

答案 0 :(得分:0)

由于表 ITEM_REPLENISH_VENDOR 中的外键约束引用了项目表中的项目代码

您需要先在目标表

中插入缺少的商品代码

您当前的查询是好的

相关问题