Сообщение об ошибке базы данных Oracle во внешнем ключе - PullRequest
0 голосов
/ 10 июня 2019

Я новичок в оракуле и пытаюсь создать таблицу с внешним ключом, однако ошибка продолжает появляться, и я не знаю, что не так.

Это маленький код, и когда я пытаюсь создать "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 Ответ

3 голосов
/ 10 июня 2019

Объявление ограничения внешнего ключа не приводит к автоматическому созданию столбца;вам все еще нужно объявить это отдельно:

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)
);

Имя столбца не обязательно должно быть одинаковым в обеих таблицах, а дочерний столбец может иметь значение NULL, даже если родительский не является.Тип данных должен совпадать.

Кстати, очень редко есть причина использовать тип данных char, вам, вероятно, следует изменить родительский и дочерний столбцы на varchar2(20).

...