【问题标题】:Insert statement conflicted with the Foreign key插入语句与外键冲突
【发布时间】:2014-11-18 14:18:40
【问题描述】:

这里我尝试从另一个源数据库表中插入数据到事实表中这是我尝试的查询

alter procedure spfactinsert
as
insert into [pp dw].dbo.Dimfact(costprice,Prod_ID,Production_ID,MaterialQuantity,Quantity)

select [cost price],Products.[Product ID],Production_Detail.[ProdDetail ID],
[Material Quantity],Production_Detail.Quantity
 from
[PRODUCTION PLANNING 2].dbo.Production_Detail,
[PRODUCTION PLANNING 2].dbo.[Materials],
[PRODUCTION PLANNING 2].dbo.[Recipies],
[PRODUCTION PLANNING 2].dbo.Products

where 
Production_Detail.[ProdDetail ID]='1' and
[Materials].[Material ID]='1' and
[Recipies].[Recipy ID]='1'
and
Products.[Product ID]='13'

但它显示错误

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Dimfact_DimProduction". The conflict occurred in database "pp dw", table "dbo.DimProduction", column 'Production_ID'.

ERD 是 IMAGE ERD

我该如何解决这个问题?

【问题讨论】:

  • 来吧,使用更好的格式。 DimProduction 的 Production_ID 也为 1。您在哪里是 Production_Detail.[ProdDetail ID]='1'。那些没有 on 的交叉连接看起来很奇怪。

标签: sql-server database tsql stored-procedures


【解决方案1】:

插入列表中的第一列是Quantity,但您选择cost price,它是插入列表中的第二列。您将 Quantity 插入为 Production_ID 导致 FK 违规。

改为:

insert into [pp dw].dbo.Dimfact(Quantity,costprice,Prod_ID,MaterialQuantity,Production_ID)
SELECT 
    Production_Detail.Quantity,
    [cost price],
    Production_Detail.[ProdDetail ID],
    [Material Quantity],
    Products.[Product ID]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多