创建外键约束时,是否需要列名?

时间:2018-07-24 08:48:33

标签: sql database oracle

假设我们通过以下脚本创建了两个表:

create table CAR (
    CAR_ID number(19,0),
    NAME varchar2(255 char),
    primary key (CAR_ID)
);
create table CAR_WHEEL (
    CAR_WHEEL_ID number(19,0),
    CAR_REF_ID number(19,0),
    WHEEL_COLOR varchar2(255 char),
    primary key (CAR_WHEEL_ID)
);

现在我想添加一个约束,所以我可以创建以下语句:

alter table CAR_WHEEL
    add constraint FK_CAR 
    foreign key (CAR_REF_ID) 
    references CAR (CAR_ID);

但是我也看到了脚本,在最后一行有references CAR;而不是references CAR (CAR_ID);

有什么区别?何时添加列名?如果CAR表的主键包含更多列,例如primary key (CAR_ID, NAME)

如果答案取决于SQL方言,那么我对Oracle特别感兴趣。

1 个答案:

答案 0 :(得分:4)

没有特定列的外键将在主键上创建它,因此对于其他主键,您需要从中添加所有列。我不建议使用隐式外键创建。