簡體   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