Oracle Sql:foreign-key也是主键语法

use*_*055 2 sql oracle foreign-keys syntax-error primary-key

我只是有一个关于符号的快速问题.我现在有两张桌子.

这个有基本的动物信息:

 create table d_animals (
  an_id     integer     primary key
, an_gender varchar2(1) not null
, an_dob    date        not null
, an_name   varchar2(10)    not null
);
Run Code Online (Sandbox Code Playgroud)

这个是关于猫:

 create table d_cats (
       an_id                        integer     primary key
     , feline_leukemia_test_date    date        not null
     , an_id    foreign key references d_animals_(an_id)
     );
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在尝试使用an_id作为d_cats中的主键,但也引用了d_animals表中的an_id.我为d_cats收到以下错误:

 ORA-00957: duplicate column name
Run Code Online (Sandbox Code Playgroud)

那我该怎么写这个呢?

另外,我不想为d_cats创建另一个列.我的教授希望我们只用an_id和feline_leukemia_test_Date写d_cats.谢谢.

tur*_*off 7

你也可以内联外键:

create table d_cats
( an_id                        integer     primary key references d_animals(an_id)
, feline_leukemia_test_date    date        not null
);
Run Code Online (Sandbox Code Playgroud)


Jef*_*emp 6

使用命名约束,即:

create table d_cats (
   an_id                        integer     primary key
 , feline_leukemia_test_date    date        not null
 , constraint d_cats_animals_fk foreign key (an_id) references d_animals (an_id)
 );
Run Code Online (Sandbox Code Playgroud)