对于这个问题,我指的是您拥有表T的特定情况,它具有主键K,但是 K是一个外键。这有效吗?以及如何用SQL99编写它?
我在这里看到的所有其他问题都只是在询问主键是否可以是另一个表的外键。那不是我要问的。我要问的是一个具有外键的表,该表是那个表的主键。
答案 0 :(得分:3)
如果我对您的理解正确,那么您想创建一个层次表,例如:
create table hierarchical
(
id number primary key,
parent_id number
);
alter table hierarchical add constraint
fk_parent_id foreign key(parent_id) references hierarchical(id);
这种表可以包含例如雇员/经理。
答案 1 :(得分:2)
列可以是主键,也可以是外键。例如,请参考以下内容:
一列既可以是主键,也可以是外键。例如:
create table A
(
id int not null
, constraint PK_A primary key (id)
);
create table B
(
id int not null
,constraint PK_B primary key (id)
,constraint FK_B_ID foreign key (id) references A(id)
);
尽管如此,这要求数据必须首先出现在表B中。