3

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

这个有基本的动物信息:

 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
);

这是关于猫的:

 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)
     );

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

 ORA-00957: duplicate column name

那么我该如何正确地写这个呢?

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

4

4 回答 4

7

使用命名约束,即:

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)
 );
于 2012-11-27T02:51:24.907 回答
7

您也可以内联外键:

create table d_cats
( an_id                        integer     primary key references d_animals(an_id)
, feline_leukemia_test_date    date        not null
);
于 2012-11-27T03:41:48.413 回答
0

为外键使用不同的名称。

create table d_cats (
       an_id                        integer     primary key
     , feline_leukemia_test_date    date        not null
     , cats_an_id    foreign key references d_animals_(an_id)
     );
于 2012-11-27T02:35:32.380 回答
0

如果您需要使用与 d_animals 表相同的列作为主键和外键,则可以使用以下语句。

CREATE TABLE d_cats
(
  an_id                      INTEGER PRIMARY KEY,
  feline_leukemia_test_date  DATE NOT NULL,
  CONSTRAINT PK_d_cats_an_id PRIMARY KEY (an_id),
  CONSTRAINT FK_d_cats_an_id FOREIGN KEY (an_id) REFERENCES d_animals(an_id)
);
于 2016-03-04T15:55:34.820 回答