外键中的Oracle数据库错误消息

时间:2019-06-10 20:10:04

标签: oracle oracle-sqldeveloper

我是oracle的新手,正在尝试使用外键创建表,但是错误不断出现,我不知道出什么问题了。

这是小代码,当我尝试创建“ UNIDADESMEDIDA”时,错误弹出:

create table TIPOUNIDAD(
    ID_TIPOUNIDAD char(20) not null,
    constraint TIPOUNIDAD_PK primary key(ID_TIPOUNIDAD)
);

create table UNIDADESMEDIDA(
    ID_UNIDADMEDIDA integer not null,
    constraint UNIDADESMEDIDA_PK primary key(ID_UNIDADMEDIDA),
    constraint TIPOUNIDAD_FK foreign key(ID_TIPOUNIDAD) references TIPOUNIDAD(ID_TIPOUNIDAD)
);

Error report -
ORA-00904: "ID_TIPOUNIDAD": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

声明外键约束不会自动创建列;您仍然需要单独声明:

create table UNIDADESMEDIDA(
    ID_UNIDADMEDIDA integer not null,
    ID_TIPOUNIDAD char(20),
    constraint UNIDADESMEDIDA_PK primary key(ID_UNIDADMEDIDA),
    constraint TIPOUNIDAD_FK foreign key(ID_TIPOUNIDAD) references TIPOUNIDAD(ID_TIPOUNIDAD)
);

两个表中的列名不必相同,子列也可以为空,即使父列也不可以。数据类型需要匹配。

顺便说一句,很少有理由使用char数据类型,您应该将父列和子列都更改为varchar2(20)