Я пытаюсь создать таблицу с оракулом SQL, два столбца таблицы должны иметь значение по умолчанию и не должны быть NULL.
Я получаю сообщение об ошибке, которое вы можете увидеть ниже, но я не могу его понять, потому что там нет скобок, которые нужно закрыть !!!!
CREATE TABLE ENCUENTROS (
2 elocal constraint clave_extrana_equipos references equipos(code) not null enable,
3 evisitante constraint clave_extrana_equipos references equipos(code) not null enable,
4 fecha date,
5 plocal number constraint plocal_mayor_cero check (plocal > 0) default 0 not null enable,
6 pvisitante number constraint pvisitante_mayor_cero check (pvisitante > 0) default 0 not null enable);
plocal number constraint plocal_mayor_cero check (plocal > 0) default 0 not null enable,
*
ERROR at line 5:
ORA-00907: missing right parenthesis
Ошибка решена:
Быстрый взгляд на онлайн-документация Oracle (ссылка) показывает, что предложение inline constraint идет в конце определения столбца после объявлений default и not null.


Этот код работал для меня:
create table encuentros (
elocal number not null
constraint clave_extrana_equipos_1 references equipos(code) enable,
evisitante number not null
constraint clave_extrana_equipos_2 references equipos(code) enable,
fecha date,
plocal number default 0 not null
constraint plocal_mayor_cero check (plocal >= 0) enable,
pvisitante number default 0 not null
constraint pvisitante_mayor_cero check (pvisitante >= 0) enable);
Было несколько вопросов:
clave_extrana_equipos для ограничений использовалось дважды. Используйте два разных имени,elocal и evisitante не имеют указанного типа,default 0 not null после спецификации типа, перед ограничением.Редактировать:
Как заметил @APC, спецификация типа для первых двух столбцов здесь не нужна.
elocal и evisitante не имеют указанного типа", Это допустимо, когда столбец имеет внешний ключ: столбец наследует тип данных указанного первичного ключа. На самом деле это не просто законно, это безопаснее.
@APC Мне удалось создать таблицу без указания типов столбцов. обновлены вопросы.
Не знаю, является ли это ошибкой, но ваше контрольное ограничение local> 0 противоречит вашему значению по умолчанию 0.