【问题标题】:data base oracle foreign key error ORA-02270: no matching unique or primary key for this column-list数据库 oracle 外键错误 ORA-02270: 此列列表没有匹配的唯一键或主键
【发布时间】:2016-07-19 01:01:50
【问题描述】:

在播放器表中创建外键时显示以下错误

ORA-02270: 此列列表没有匹配的唯一键或主键

create table person
(

per_ssn number(10) not null,

per_name varchar2(30) not null,

CONSTRAINT pk_PersonID PRIMARY KEY (per_ssn,per_name)

); 


create table Player 
(

player_ssn number(10) not null,

player_name varchar2(30) not null,

football_club_name varchar2(30) not null, 

p_age number(2) not null,

p_weight number(3) not null,

p_height number(10) not null,

country varchar2(20) not null,

p_starting_date date not null, 

p_ending_date date not null

);

alter table Player

 add constraint player_ssn 

 FOREIGN KEY (player_ssn)

 REFERENCING person (per_ssn)on delete cascade

我想在 person 表中创建两个主键,然后想引用这些 播放器表中的主键。

如果我创建一个主键然后在播放器表中引用它,那么它不会显示错误但我想创建两个主键。

【问题讨论】:

    标签: oracle


    【解决方案1】:

    您应该引用per_ssn,per_name,因为这是您在person 上的PK。 不管怎样,考虑让per_ssn成为你在person表中的PK

    alter table Player
    add constraint player_ssn 
    FOREIGN KEY (player_ssn,player_name)
    REFERENCING person (per_ssn,per_name)on delete cascade
    

    【讨论】:

    • 是的,我亲自尝试并只制作了一个主 per_ssn,然后将其引用到播放器表,它可以工作,但我想同时创建个人主键的属性,然后想将其引用给播放器表
    • @Umer.farooq6028Farooq 如果让一个人与众不同的是 person_ssn 和 per_name,请按照我发布的那样做。如果这些属性中的任何一个使一个人独一无二(我怀疑 per_name 是唯一的),请让 per_ssn 成为您的 pk 和 per_name 上的唯一索引
    • 是的,你是对的,现在我正在做同样的事情,但是在 oracle 中是否有可能我们可以引用表的两个主键
    • @Umer.farooq6028Farooq 如果你愿意,你可以创建一个 PK 和一个对人的唯一约束并在 Player 上创建 2 个 FK(我真的不明白这一点):create table person ( per_ssn number(10) not null, per_name varchar2(30) not null, CONSTRAINT pk_PersonID PRIMARY KEY (per_ssn), CONSTRAINT uq_PersonName UNIQUE (per_name) )@987654327 @
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 2022-12-14
    • 1970-01-01
    相关资源
    最近更新 更多