[英]MSSQL There are no primary or candidate keys in the referenced table
I'm creating 3 tables (1 parent and 2 child) and trying to set foreign keys but I'm getting this error:我正在创建 3 个表(1 个父表和 2 个子表)并尝试设置外键,但出现此错误:
There are no primary or candidate keys in the referenced table.
引用的表中没有主键或候选键。
CREATE TABLE WEATHER_FORECASTS(
WEATHER_ID tinyint NOT NULL,
TOWN_ID char(2) NOT NULL,
PRIMARY KEY(WEATHER_ID, TOWN_ID)
);
CREATE TABLE WEATHER(
WEATHER_ID tinyint NOT NULL REFERENCES WEATHER_FORECASTS(WEATHER_ID),
WEATHER_TYPE varchar(20) NOT NULL
PRIMARY KEY(WEATHER_ID)
);
CREATE TABLE TOWNS(
TOWN_ID char(2) NOT NULL REFERENCES WEATHER_FORECASTS(TOWN_ID),
TOWN_NAME varchar(20) NOT NULL
);
As @Sticky Bit says you have the Foreign Key the wrong way round, you should have two foreign keys in the weather_forecasts table referencing the tables weather & towns:正如@Sticky Bit 所说,您的外键方向错误,您应该在 weather_forecasts 表中有两个外键,引用表天气和城镇:
CREATE TABLE TOWNS(
TOWN_ID char(2) NOT NULL,
TOWN_NAME varchar(20) NOT NULL,
PRIMARY KEY(TOWN_ID)
);
CREATE TABLE WEATHER(
WEATHER_ID tinyint NOT NULL,
WEATHER_TYPE varchar(20) NOT NULL
PRIMARY KEY(WEATHER_ID)
);
CREATE TABLE WEATHER_FORECASTS(
WEATHER_ID tinyint NOT NULL REFERENCES WEATHER(WEATHER_ID),
TOWN_ID char(2) NOT NULL REFERENCES TOWNS(TOWN_ID),
PRIMARY KEY(WEATHER_ID, TOWN_ID)
);
You may want to consider putting Indexes on those two foreign keys in the WEATHER_FORECASTS table to enhance performance.您可能需要考虑将索引放在 WEATHER_FORECASTS 表中的这两个外键上以提高性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.