首页 > 解决方案 > 创建外键约束时,是否需要列名?

问题描述

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

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 特别感兴趣。

标签: sqldatabaseoracle

解决方案


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


推荐阅读