========== DROP INDEX ========== .. container:: refentry :name: SQL-DROPINDEX .. container:: titlepage .. container:: refnamediv .. rubric:: DROP INDEX :name: drop-index DROP INDEX — 移除一个索引 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] .. container:: refsect1 :name: id-1.9.3.116.5 .. rubric:: 描述 :name: 描述 ``DROP INDEX``\ 从数据库系统中 移除一个已有的索引。要执行这个命令你必须是该索引的拥 有者。 .. container:: refsect1 :name: id-1.9.3.116.6 .. rubric:: 参数 :name: 参数 .. container:: variablelist ``CONCURRENTLY`` 删除索引并且不阻塞在索引基表上的并发选择、插入、更新和删除操作。一个 普通的\ ``DROP INDEX``\ 会要求该表上的排他锁,这样会阻塞 其他访问直至索引删除完成。通过这个选项,该命令会等待直至冲突事务完成。 在使用这个选项时有一些需要注意的事情。只能指定一个索引名称,并且不支 持\ ``CASCADE``\ 选项(因此,一个支持\ ``UNIQUE``\ 或者 ``PRIMARY KEY``\ 约束的索引不能以这种方式删除)。还有,常规 的\ ``DROP INDEX``\ 命令可以在一个事务块内执行,而 ``DROP INDEX CONCURRENTLY``\ 不能。 对于临时表,\ ``DROP INDEX``\ 始终是非并发的,因为没有其他会话可以访问它们,而且丢弃非并发索引更加便宜。 ``IF EXISTS`` 如果该索引不存在则不要抛出一个错误,而是发出一个提示。 *``name``* 要移除的索引的名称(可以是模式限定的)。 ``CASCADE`` 自动删除依赖于该索引的对象,然后删除所有 依赖于那些对象的对象(见\ `第 5.14 节 `__\ )。 ``RESTRICT`` 如果有任何对象依赖于该索引,则拒绝删除它。这是默认值。 .. container:: refsect1 :name: id-1.9.3.116.7 .. rubric:: 示例 :name: 示例 这个命令将移除索引\ ``title_idx``\ : .. code:: programlisting DROP INDEX title_idx; .. container:: refsect1 :name: id-1.9.3.116.8 .. rubric:: 兼容性 :name: 兼容性 ``DROP INDEX``\ 是一个 OushuDB 语言扩展。在 SQL 标准中没有提供索引。 .. container:: refsect1 :name: id-1.9.3.116.9 .. rubric:: 另见 :name: 另见 `CREATE INDEX `__