外键参考问题。但为什么?

时间:2018-08-23 07:54:52

标签: sql sql-server

下面是我的图表。 ER Diagram

我的要求是,客户可以购买一捆上衣/ pardi / lhenga或任何两种或任意一种产品。

对于上述内容,以下是我的ER-DIAGRAM。但问题是我无法从sql server创建数据。它说。

Error

以下是请求的关系:

ALTER TABLE [dbo].[MEASURE_TYPE]  WITH CHECK ADD  CONSTRAINT [FK_BLOUSE_MEASUREMENT] FOREIGN KEY([MEASUREMENTID])
REFERENCES [dbo].[BLOUSE_MEASUREMENT] ([MEASUREMENTID])
GO
ALTER TABLE [dbo].[MEASURE_TYPE] CHECK CONSTRAINT [FK_BLOUSE_MEASUREMENT]
GO
ALTER TABLE [dbo].[MEASURE_TYPE]  WITH CHECK ADD  CONSTRAINT [FK_CUSTOMER] FOREIGN KEY([CUSTOMERID])
REFERENCES [dbo].[CUSTOMER] ([CUSTOMERID])
GO
ALTER TABLE [dbo].[MEASURE_TYPE] CHECK CONSTRAINT [FK_CUSTOMER]
GO
ALTER TABLE [dbo].[MEASURE_TYPE]  WITH CHECK ADD  CONSTRAINT [FK_LHENGA_MEASUREMENT] FOREIGN KEY([MEASUREMENTID])
REFERENCES [dbo].[LHENGA_MEASUREMENT] ([MEASUREMENTID])
GO
ALTER TABLE [dbo].[MEASURE_TYPE] CHECK CONSTRAINT [FK_LHENGA_MEASUREMENT]
GO
ALTER TABLE [dbo].[MEASURE_TYPE]  WITH CHECK ADD  CONSTRAINT [FK_PARDI_MEASUREMENT] FOREIGN KEY([MEASUREMENTID])
REFERENCES [dbo].[PARDI_MEASUREMENT] ([MEASUREMENTID])
GO
ALTER TABLE [dbo].[MEASURE_TYPE] CHECK CONSTRAINT [FK_PARDI_MEASUREMENT]
GO

relation_fk

2 个答案:

答案 0 :(得分:3)

您的FK_BLOUSE_MEASUREMENT约束位于MEASURE_TYPE表上。您试图将MEASURE_TYPE的记录插入BLOUSE_MEASUREMENT中,而不在BLOUSE_MEASUREMENT中进行相应的插入。您正在measurementid中插入MEASURE_TYPE,而measurementid表中不存在具有相同值的BLOUSE_MEASUREMENT

首先在BLOUSE_MEASUREMENT中进行插入,然后在MEASURE_TYPE中进行插入。

更新

由于您在多个表中使用与外键相同的行,因此DB希望measurementid出现在所有度量表中。 MEASURE_TYPE中每个测量表都需要前键。

因此MEASURE_TYPE将具有以下列:Blouse_measurement_idPardi_measurement_idLhenga_measurement_idordertypecustomerid。以及Blouse_measurement_idmeasurementidBLOUSE_MEASUREMENT的外键约束,其他表也是如此。

答案 1 :(得分:0)

从您的ER图中,我想FK_BLOUSE_MEASUREMENT定位于MEASURE_TYPE.MEASUREMENTID。

您是否要插入表BLOUSE_MEASUREMENT而不在表MEASURE_TYPE中插入具有相同MEASUREMENTID的行?