DROP INDEX — 인덱스 삭제
DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] 이름
[, ...] [ CASCADE | RESTRICT ]
DROP INDEX
명령은 현재 데이터베이스에서
해당 인덱스를 지운다. 인덱스는 해당 소유자만 지울 수 있다.
CONCURRENTLY
이 옵션을 사용하면, 인덱스 삭제 작업을 할 때도,
이 인덱스를 사용하는 테이블의 자료 조작 및 검색이 가능하다. 일반적으로
DROP INDEX
명령은 해당 테이블에 대해서 배타적 잠금을
사용한다. 테이블 배타적 잠금이란 해당 작업을 하는 동안에, 다른
사용자들은 그 테이블에 대해서 어떠한 작업도 진행 하지 못하고,
삭제 작업이 끝날 때까지 기다리는 것을 의미한다.
이 옵션을 사용할 때는 다음 사항을 꼭 지켜야한다. 먼저 삭제 명령은
반드시 하나의 인덱스만 사용해야한다. 또한 CASCADE
옵션과 함께 사용할 수 없다. (이런 제약 사항 때문에,
UNIQUE
인덱스나, PRIMARY KEY
제약조건으로
만들어진 인덱스는 이 옵션을 지정해서 삭제할 수 없다.) 또한
일반적인 DROP INDEX
명령은 트랜잭션 내에서
사용할 수 있으나, 이 옵션을 사용하면 트랜잭션 내에서는
사용할 수 없다.
IF EXISTS
해당 인덱스가 없어도 오류를 내지 않고, 알림 메시지만 보여준다.
name
삭제 하려는 (스키마 이름을 포함 할 수도 있는) 인덱스 이름.
CASCADE
해당 인덱스와 의존성 관계가 있는 모든 객체도 함께 삭제한다. 물론, 삭제될 다른 객제와 관계된 또 다른 객체들도 함께 삭제 한다. (5.13절 참조).
RESTRICT
해당 인덱스와 의존성 관계가 있는 객체가 있으면 작업을 중지한다. 이 옵션이 기본값이다.
title_idx
이름의 인덱스를 지우려면:
DROP INDEX title_idx;
DROP INDEX
명령은 PostgreSQL
확장 기능이다. 표준 SQL에서는 인덱스에 대한 규정이 없다.