我是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:
有什么建议吗?
答案 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)
。