我只是一个关于符号的快速问题。我现在有两张桌子。
这个有动物基本信息:
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。 谢谢。
答案 0 :(得分:7)
您也可以内联外键:
create table d_cats
( an_id integer primary key references d_animals(an_id)
, feline_leukemia_test_date date not null
);
答案 1 :(得分:5)
使用命名约束,即:
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)
);
答案 2 :(得分: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)
);
答案 3 :(得分: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)
);