create table
и create index
- это отдельные операторы, вы не можете их смешивать (хотя вы можете иметь индекс неявно или явно созданный для резервного копирования уникального или основного ограничения ключа, которое вы определяете в строке).
Вы должны сделать это в два этапа, как два отдельных заявления:
create table example (id number(12, 0) not null);
create index example_idx on example(id);
пример вы показываете из here:
CREATE TABLE a (
a1 INT PRIMARY KEY USING INDEX (create index ai on a (a1)));
находится в разделе под названием «Задание Индекс, связанный с ограничением ', и создает индекс как часть ограничения первичного ключа. Оговорка using index
описана here.
В коде вы создали ненулевое ограничение, которое не поддерживается индексом, так что предложение здесь недействительно. Этот метод создания индекса можно использовать только в том случае, если он предназначен для поддержки уникального или первичного ключа, как указано в приведенной вами ссылке.
http://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes003.htm Эта ссылка показывает тот же путь (см. Пример 1). – randacun
@randacun - он делает, но только для уникальных ограничений и ограничений первичного ключа, и вы не создаете один из них; только ограничение, отличное от нуля. Я обновил ответ, надеюсь, уточнить это. –
Спасибо, я, вероятно, придерживаюсь объявления индекса отдельно. – randacun