Sql 引用的表中没有主键或候选键。。。与外键中的引用列列表匹配
创建表时出现此错误Sql 引用的表中没有主键或候选键。。。与外键中的引用列列表匹配,sql,foreign-keys,composite-key,Sql,Foreign Keys,Composite Key,创建表时出现此错误[dbo].[WeibullSummaryDetails] 这是我的两张桌子 CREATE TABLE [dbo].[WeibullFilterDetails] ( [WeibullFilterDetailsId] [int] IDENTITY(1,1) NOT NULL, [ProjectTeamId] int not null, [WeekStartDate] date not NULL, [WeekEndDa
[dbo].[WeibullSummaryDetails]
这是我的两张桌子
CREATE TABLE [dbo].[WeibullFilterDetails]
(
[WeibullFilterDetailsId] [int] IDENTITY(1,1) NOT NULL,
[ProjectTeamId] int not null,
[WeekStartDate] date not NULL,
[WeekEndDate] date not null ,
[IsRefreshed] bit NULL,
CONSTRAINT FK_WeibullFilterDetails_WeibullFilterDetails
FOREIGN KEY ([ProjectTeamId])
REFERENCES [dbo].[ProjectTeams]([Id]),
PRIMARY KEY ([ProjectTeamId], [WeibullFilterDetailsId])
)
CREATE TABLE [dbo].[WeibullSummaryDetails]
(
[WeibullSummaryDetailsId] [int] IDENTITY(1,1) NOT NULL,
[WeibullFilterDetailsId] int not null,
[ProjectTeamId] int not null,
[ActualEstimatedBugCount] int NULL,
[CurrentBugCount] int NULL,
[PercentageBugFound] float NULL,
[PercentageBugResolved] float NULL,
[BugsToFind] int NULL,
BugsToResolve int NULL,
LinearEquation nvarchar(100) null,
RSquare float NULL,
Shape float NULL,
Scale float NULL
PRIMARY KEY ([WeibullSummaryDetailsId], [WeibullFilterDetailsId],[ProjectTeamId]),
CONSTRAINT FK_WeibullSummaryDetails_WeibullFilterDetails
FOREIGN KEY ([WeibullFilterDetailsId],[ProjectTeamId])
REFERENCES [dbo].[WeibullFilterDetails]([WeibullFilterDetailsId],[ProjectTeamId])
)
详细错误消息
味精1776,第16级,状态0,第14行引用的表“dbo.WeibullFilterDetails”中没有与外键“FK_WeibullSummaryDetails_WeibullFilterDetails”中的引用列列表匹配的主键或候选键 Msg 1750,第16级,第0状态,第14行
无法创建约束。请参阅前面的错误 我看过其他关于这个错误的文章,通常给出的解决方案是,如果父表有一个复合键,那么这两列也应该出现在子表中,并且应该用于外键约束 这正是我在这里所做的,但仍然得到这个错误
非常感谢您的帮助 对于
[dbo].[WeibullFilterDetails]
您将主键定义为([ProjectTeamId],[WeibullFilterDetailsId])
,但在您编写的引用子句中([WeibullFilterDetailsId],[ProjectTeamId])
顺序不匹配。尝试:
CREATE TABLE [dbo].[WeibullSummaryDetails](
...
FOREIGN KEY ([ProjectTeamId],[WeibullFilterDetailsId])
REFERENCES [dbo].[WeibullFilterDetails]([ProjectTeamId],[WeibullFilterDetailsId])
);
对于[dbo].[WeibullFilterDetails]
您将主键定义为([ProjectTeamId],[WeibullFilterDetailsId])
,但在您编写的引用中([WeibullFilterDetailsId],[ProjectTeamId])
——顺序不匹配。尝试:
CREATE TABLE [dbo].[WeibullSummaryDetails](
...
FOREIGN KEY ([ProjectTeamId],[WeibullFilterDetailsId])
REFERENCES [dbo].[WeibullFilterDetails]([ProjectTeamId],[WeibullFilterDetailsId])
);