首页 > 解决方案 > 我的 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)
);

标签: sqloracleprimary-keycreate-tablecomposite-primary-key

解决方案


外键应该引用它所引用的表的主键。

所以我想你想要:

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。不应该重复。


推荐阅读