外键的SQL外键
首先,我正在使用DB2 我的问题是:外键的SQL外键,sql,db2,Sql,Db2,首先,我正在使用DB2 我的问题是: 我有一个带有主键的表a 带有两个主键的表B(其中一个是A的外键) 带有主键的表C 表D,其主键为B和C 如何创建表D 我的第一个想法是,但它不起作用: Create Table D( A varchar(20) not null references B(A), B varchar(20) not null references B(name of prim key attribute from B), C varchar(20) no
- 我有一个带有主键的表
a
- 带有两个主键的表
(其中一个是B
的外键)A
- 带有主键的表
C
- 表
,其主键为D
和B
C
D
我的第一个想法是,但它不起作用:
Create Table D(
A varchar(20) not null references B(A),
B varchar(20) not null references B(name of prim key attribute from B),
C varchar(20) not null references C,
primary key(A,B,C)
);
希望您理解我的问题并能帮助我。正如Marc_的评论,一个表中只能有一个主键,即一个表中不能有多个主键
作为问题的解决方案,您可能可以组合表B和表C的两列,它们可以一起作为表D的主键。外键引用列的名称,而不是约束的名称 设置
create table A (
col_a int primary key
);
create table B (
col_a int not null,
col_b int not null,
primary key (col_a, col_b),
foreign key (col_a) references A (col_a)
);
create table C (
col_c int primary key
);
还有死刑
create table D (
col_a int not null,
col_b int not null,
col_c int not null,
primary key (col_a, col_b, col_c),
foreign key (col_a, col_b) references B (col_a, col_b),
foreign key (col_c) references C (col_c)
);
一个表只能有一个主键-您可能的意思是由两列组成的主键,或者您的意思是表B有两个单独的列,每个列本身都是唯一的?也许将它们组合为一个复合键没有必要或意义?谢谢。这正是我搜索的内容=)