sql - 我的 Create Table 语句中的错误逻辑在哪里?
问题描述
我正在尝试运行这些语句,但我收到一条错误消息no matching unique or primary key for this column-list
。你能帮我解决这个问题吗?
当我尝试创建表 SITE 时遇到问题:
CREATE TABLE OLMP_COUNTRY (
NOC CHAR(3),
TEAM VARCHAR2(100),
CITY VARCHAR2(100),
CONSTRAINT country_pk PRIMARY KEY(NOC)
);
CREATE TABLE ATHLETE (
ATHELTE_ID CHAR(8),
NAME VARCHAR2(100),
AGE CHAR(3),
SEX CHAR(1),
HEIGHT CHAR(3),
WEIGHT DECIMAL(3,1),
NOC CHAR(3),
CONSTRAINT athlete_pk PRIMARY KEY(ATHLETE_ID),
CONSTRAINT country_fk FOREIGN KEY(NOC) REFERENCES OLMP_COUNTRY(NOC)
);
CREATE TABLE SITE (
NOC CHAR(3),
CITY VARCHAR2(100),
SEASON VARCHAR2(20),
YEAR CHAR(4),
CONSTRAINT site_pk PRIMARY KEY(NOC),
CONSTRAINT country_fk FOREIGN KEY(CITY) REFERENCES OLMP_COUNTRY(CITY)
);
CREATE TABLE RESULTS (
RESULT_ID CHAR(8),
MEDAL CHAR(6),
ATHLETE_ID CHAR(8),
SPORT_EVENT VARCHAR2(100),
YEAR CHAR(4),
GAMES VARCHAR2(50),
CONSTRAINT results_pk PRIMARY KEY(RESULTS_ID)
);
CREATE TABLE EVENT (
SPORT_EVENT VARCHAR2(100),
SPORT VARCHAR2(50),
GAMES VARCHAR2(50)
CONSTRAINT event_pk PRIMARY KEY(SPORT_EVENT)
);
解决方案
外键应该引用它所引用的表的主键。
所以我想你想要:
CREATE TABLE SITE (
NOC CHAR(3),
CITY VARCHAR2(100),
SEASON VARCHAR2(20),
YEAR CHAR(4),
CONSTRAINT site_pk PRIMARY KEY(NOC),
CONSTRAINT site_country_fk FOREIGN KEY(NOC) REFERENCES OLMP_COUNTRY(NOC)
);
我不知道你为什么CITY
在两个表中都重复,但外键约束应该是主键。您可以使用 查找城市JOIN
。不应该重复。
推荐阅读
- python - 无法解决零星的拆分记录问题
- javascript - Discord.js 是否可以仅使用“关闭”(没有 channeID)删除频道?
- angular - 带有 Angular 的 amazon-ivs-player
- kotlin - 访问可选的 kotlin.Result
- pytorch - 如何将常量列表附加到张量板中的运行?
- python - ImportError:“测试”模块不正确
- .htaccess - .htaccess 重写以重定向到带有变量的子目录
- node.js - 当我重新加载太多次时网站崩溃
- python - 如何在父类的 __init__ 调用的方法中使用子类的属性
- angular - NgRx 效果 catchError 永远不会启动