支持的版本:当前 (17) / 16 / 15 / 14 / 13
开发版本:devel
不支持的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

DROP INDEX

DROP INDEX — 删除索引

概要

DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

描述

DROP INDEX 从数据库系统中删除一个已存在的索引。要执行此命令,你必须是该索引的所有者。

参数

CONCURRENTLY

删除索引,而不会阻止对索引表的并发选择、插入、更新和删除操作。正常的 DROP INDEX 会在表上获取一个 ACCESS EXCLUSIVE 锁,阻塞其他访问,直到索引删除完成。使用此选项,命令会等待,直到冲突的事务完成。

使用此选项时,有几个注意事项需要注意。只能指定一个索引名称,并且不支持 CASCADE 选项。(因此,不支持 UNIQUEPRIMARY KEY 约束的索引不能以这种方式删除。)另外,常规的 DROP INDEX 命令可以在事务块内执行,但 DROP INDEX CONCURRENTLY 则不能。最后,不能使用此选项删除分区表上的索引。

对于临时表,DROP INDEX 始终是非并发的,因为没有其他会话可以访问它们,并且非并发索引删除成本更低。

IF EXISTS

如果索引不存在,则不抛出错误。在这种情况下会发出通知。

name

要删除的索引的名称(可选地带有模式限定)。

CASCADE

自动删除依赖于该索引的对象,以及反过来依赖于这些对象的所有对象(请参见第 5.15 节)。

RESTRICT

如果任何对象依赖于该索引,则拒绝删除该索引。这是默认行为。

示例

此命令将删除索引 title_idx

DROP INDEX title_idx;

兼容性

DROP INDEXPostgreSQL 语言的扩展。SQL 标准中没有关于索引的规定。

另请参阅

CREATE INDEX

提交更正

如果您在文档中发现任何不正确、与您使用特定功能的经验不符或需要进一步澄清的内容,请使用此表单报告文档问题。