[英]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.