DROP INDEX

DROP INDEX — удалить индекс


Синтаксис

DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] имя [, ...] [ CASCADE | RESTRICT ]

Описание

Команда DROP INDEX удаляет существующий индекс из СУБД. Для выполнения этой команды нужно быть владельцем соответствующего индекса.


Параметры

CONCURRENTLY

Удалить индекс без блокировки параллельных операций выборки, добавления, изменения и удаления данных в таблице индекса. Обычная команда DROP INDEX запрашивает на эту таблицу блокировку ACCESS EXCLUSIVE, блокируя другие обращения к ней до завершения удаления индекса. С этим параметром команда вместо этого будет ожидать завершения конфликтующих транзакций.

Есть несколько особенностей, которые следует учитывать при использовании этого параметра. Можно указать только одно имя индекса, и не поддерживается указание CASCADE. (Следовательно, индекс, поддерживающий ограничение UNIQUE или PRIMARY KEY, не может быть удален таким способом.) Кроме того, обычные команды DROP INDEX могут выполняться в блоке транзакции, а DROP INDEX CONCURRENTLY не может. И наконец, с помощью этого параметра нельзя удалить индексы по партиционированным таблицам.

На временных таблицах команда DROP INDEX всегда выполняется неблокирующим способом, так как другие сеансы не могут обращаться к этим таблицам, а кроме того неблокирующее удаление индекса менее затратно.

IF EXISTS

Не считать ошибкой, если этот индекс не существует. В этом случае выдается только замечание.

имя

Имя удаляемого индекса (может быть дополнено схемой).

CASCADE

Автоматически удалять объекты, зависящие от этого индекса, и, в свою очередь, все объекты, зависящие от этих объектов (см. раздел Отслеживание зависимостей).

RESTRICT

Отказать в удалении этого индекса, если от него зависят какие-либо объекты. Это поведение по умолчанию.


Примеры

Эта команда удалит индекс title_idx:

DROP INDEX title_idx;

Совместимость

Команда DROP INDEX является языковым расширением QHB. В стандарте SQL нет положений для индексов.


См. также

CREATE INDEX