繁体   English   中英

SQL Server表创建错误:引用中没有主键或候选键

[英]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表上的主键是一个复合键,其中包含两列: idemail

为了进行编译,您可以将主键更改为:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM