无法添加外键约束(错误ORA-02270:此列列表没有匹配的唯一键或主键)

我正在学习如何为具有主键和外键约束的班级创建一个小型且简单的数据库。尝试运行我的ALTER TABLE语句时,我得到ORA-02770,据我所知,该语句通知我在外部表中引用的列未作为主键约束列出。但是,从我看到的语法来看,在CREATE TABLES语句中命名主键是正确的。我在all_cons_columns表中搜索player_info表,它还显示了列出的主键。我可以得到一些指导吗?下面列出的是我当前的脚本:

CREATE TABLE Player_Game
( school varchar2(30),player_number number(2,0),game_number number(1,CONSTRAINT playergame_pk PRIMARY KEY (school,player_number,game_number)
);

CREATE TABLE School 
( school varchar2(30),city varchar2(30),coach varchar2(30),team_name varchar2(30),win_record number (2,loss_record number (2,CONSTRAINT school_pk PRIMARY KEY (school)
);

CREATE TABLE Game 
( school varchar2(30),game_date DATE,game_score varchar2(15),CONSTRAINT game_pk PRIMARY KEY (school,game_number)
);

CREATE TABLE player_info
( school varchar2(30),player_name varchar2(25),CONSTRAINT playerinfo_pk PRIMARY KEY (school,player_number)
);

CREATE TABLE city 
( city varchar2(30),population number(5,CONSTRAINT city_pk PRIMARY KEY (city)
);

/*Here is the failing alter command */
ALTER TABLE Player_Game
ADD CONSTRAINT playergame_fk FOREIGN KEY (school) REFERENCES game(school); 
tarenamis 回答:无法添加外键约束(错误ORA-02270:此列列表没有匹配的唯一键或主键)

您在alter table语句的playergame_fk中的列列表不正确。 外键的列列表必须与它所引用的主键的列列表完全匹配。

主键列列表为school,game_number,因此,您的外键必须具有相同的列:

ALTER TABLE Player_Game
ADD CONSTRAINT playergame_fk FOREIGN KEY (school,game_number) 
  REFERENCES game(school,game_number);
本文链接:https://www.f2er.com/2417543.html

大家都在问