首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle Sql: foreign-key也是主键语法

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

Stack Overflow用户
提问于 2012-11-27 10:33:40
回答 4查看 18.1K关注 0票数 3

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

这个有基本的动物信息:

代码语言:javascript
复制
 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
);

这个是关于猫的:

代码语言:javascript
复制
 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,我得到以下错误:

代码语言:javascript
复制
 ORA-00957: duplicate column name

那么我该如何正确地写出这段代码呢?

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-27 10:51:25

使用命名约束,即:

代码语言:javascript
复制
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)
 );
票数 7
EN

Stack Overflow用户

发布于 2012-11-27 11:41:48

你也可以内联外键:

代码语言:javascript
复制
create table d_cats
( an_id                        integer     primary key references d_animals(an_id)
, feline_leukemia_test_date    date        not null
);
票数 7
EN

Stack Overflow用户

发布于 2012-11-27 10:35:32

对外键使用不同的名称。

代码语言:javascript
复制
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)
     );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13576553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档