![](/img/trans.png)
[英]SQL Server : there are no primary or candidate keys in the referenced table
[英]SQL Server table creation error : There are no primary or candidate keys in the referenced
一个非常基本的脚本使我发疯。 它说找不到引用的密钥。 不知道这是怎么回事。 我正在使用SQL SERVER 2014,此脚本用于创建数据库表。 我正在尝试使表id_TABLE_1
中的TABLE_2
引用表TABLE_1
的ID。
CREATE TABLE TABLE_1
(
id int identity,
email varchar(50) not null,
constraint PK_TABLE_1 primary key (id,email)
)
GO
CREATE TABLE TABLE_2
(
id int identity,
id_TABLE_1 int not null,
constraint PK_TABLE_2 primary key (id),
constraint FK_TABLE_2 foreign key (id_TABLE_1)
references TABLE_1(id) on delete cascade
)
GO
错误是:
消息1776,级别16,状态0,第32行
在引用表“ TABLE_1”中没有与外键“ FK_TABLE_2”中的引用列列表匹配的主键或候选键。消息1750,级别16,状态0,第32行
无法创建约束或索引。 请参阅先前的错误。
你能在这里帮我吗?
根据评论,您正在尝试引用不存在的索引。 TABLE_1
表上的主键是一个复合键,其中包含两列: id
和email
。
为了进行编译,您可以将主键更改为:
CONSTRAINT PK_TABLE_1 PRIMARY KEY (id)
或仅在id
列上创建一个新索引:
CREATE INDEX IX_TABLE_1_id ON TABLE_1 (id);
具有包含标识列的复合主键没有任何意义。 id列已经是唯一的并且不是NULL,因此它应该是主键。
如果您还希望电子邮件具有唯一性,则将其从主键中删除并声明为唯一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.