Я хочу создать таблицу bar
с ограничением именованного внешнего ключа, подкрепленным именованным индексом. Я хотел бы сделать это с помощью встроенного определения в инструкции DDL создания таблицы. При взгляде на Oracle 19 SQL справочник по языку похоже, что Oracle должен поддерживать выполнение этого встроенного кода.
При выполнении следующих операторов ...
create table foo (
id number not null primary key
);
create table bar (
id number not null primary key,
nick varchar2(16) not null constraint foo_nick_ck unique using index,
foo_id number not null constraint foo_fk references foo using index
);
Oracle ответит [42000][907] ORA-00907: missing right parenthesis
и укажет на позицию непосредственно перед using index
в последней строке. Если я удаляю using index
, это работает (но, конечно, без создания индекса). Я сохранил столбец nick
в качестве примера того, где он работает для создания встроенного индекса поддержки, но для уникального ограничения вместо ограничения внешнего ключа.
Я знаю, что обходной путь должен создать индекс поддержки в отдельной инструкции DDL, но я бы очень хотел, чтобы он был аккуратным и аккуратным.