我正在尝试为计算机零件库存创建数据库。这是我的Merger
表:
CREATE TABLE [dbo].Merger
(
[ID] INT NOT NULL IDENTITY,
[EntryID] INT NOT NULL,
[PartID] VARCHAR(50) NOT NULL,
[ModelID] VARCHAR(50) NOT NULL,
[QuantityID] INT NOT NULL,
[LocationID] VARCHAR(50) NOT NULL,
[DescriptionID] NVARCHAR(MAX) NOT NULL,
CONSTRAINT [PK_Merger] PRIMARY KEY ([ID]),
CONSTRAINT [EntryFK] FOREIGN KEY ([EntryID]) REFERENCES [Entry]([ID]),
CONSTRAINT [PartFK] FOREIGN KEY ([PartID]) REFERENCES [Part]([ID]),
CONSTRAINT [ModelFK] FOREIGN KEY ([ModelID]) REFERENCES [Model]([ID]),
CONSTRAINT [QuantityFK] FOREIGN KEY ([QuantityID]) REFERENCES [Quantity]([ID]),
CONSTRAINT [LocationFK] FOREIGN KEY ([LocationID]) REFERENCES [Location]([ID]),
CONSTRAINT [DescriptionFK] FOREIGN KEY ([DescriptionID]) REFERENCES [Description]([ID]),
)
出于某种原因,粗体的回来时会出现错误:
SQL71515:列'[dbo]。[Part]。[ID]'与引用列'[dbo]。[Merger]。[PartID]'在外键中的数据类型不同。
这对我来说没有意义,因为数据类型是相同的,在Merger
表和从中提取数据的表中。如果有人知道如何解决这个问题,请帮忙!
我已经尝试删除所有主键并保存,然后重新添加它们并再次尝试外键,但没有运气。
我已将OP的评论移至问题:
CREATE TABLE [dbo].Part
(
[ID] INT NOT NULL IDENTITY,
[Part] VARCHAR(50) NOT NULL,
CONSTRAINT [PK_Part] PRIMARY KEY ([ID])
)
答案 0 :(得分:2)
在Merger
表格中,PartID
列定义为VARCHAR(50)
。
在Part
表格中,ID
列定义为INT
。
int
和varchar
是不同的类型,错误消息就是这样说的。
您应该将Merger.PartID
列的类型更改为int
以匹配Part.ID
列的类型。
答案 1 :(得分:0)
" SQL71515:列' [dbo。[Part。[ID]'与数据类型不同 引用列' [dbo]。[合并]。[PartID]'在外键中。"
不仅相同的数据类型,还要检查它们是否具有相同的长度和属性。
根据我的经验写这个,所以请检查一下。