DROP INDEX — インデックスを削除する
DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
DROP INDEXはデータベースシステムから既存のインデックスを削除します。
このコマンドを実行するには、そのインデックスを所有していなければなりません。
CONCURRENTLY
インデックスのテーブルに対して同時に実行される選択、挿入、更新、削除をロックすることなくインデックスを削除します。
通常のDROP INDEXではテーブルに対する排他ロックを獲得し、インデックスの削除が完了するまで他のアクセスをブロックします。
このオプションを使うと、競合するトランザクションが完了するまでコマンドは待たされます。
このオプションを使用する時に注意すべき、複数の警告があります。
指定できるインデックス名は1つだけであり、また、CASCADEオプションはサポートされません。
(したがってUNIQUEまたはPRIMARY KEY制約をサポートするインデックスをこの方法で削除することはできません。)
また、通常のDROP INDEXはトランザクションブロックの中で行うことができますが、DROP INDEX CONCURRENTLYはできません。
IF EXISTSインデックスが存在しない場合でもエラーになりません。 この場合注意メッセージが発行されます。
name削除するインデックスの名前です(スキーマ修飾名も可)。
CASCADEそのインデックスに依存しているオブジェクトを自動的に削除し、さらにそれらのオブジェクトに依存するすべてのオブジェクトも削除します(5.13参照)。
RESTRICT依存しているオブジェクトがある場合、そのインデックスの削除を拒否します。 こちらがデフォルトです。
次のコマンドはインデックスtitle_idxを削除します。
DROP INDEX title_idx;
DROP INDEXはPostgreSQLの言語拡張です。
標準SQLにはインデックスに関する規定はありません。