DROP INDEX — 移除一个索引
DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ]name
[, ...] [ ONtbname
] [ CASCADE | RESTRICT ]
DROP INDEX
从数据库系统中
移除一个已有的索引。要执行这个命令你必须是该索引的拥
有者。
CONCURRENTLY
删除索引并且不阻塞在索引基表上的并发选择、插入、更新和删除操作。一个
普通的DROP INDEX
会要求该表上的排他锁,这样会阻塞
其他访问直至索引删除完成。通过这个选项,该命令会等待直至冲突事务完成。
在使用这个选项时有一些需要注意的事情。只能指定一个索引名称,并且不支
持CASCADE
选项(因此,一个支持UNIQUE
或者
PRIMARY KEY
约束的索引不能以这种方式删除)。还有,常规
的DROP INDEX
命令可以在一个事务块内执行,而
DROP INDEX CONCURRENTLY
不能。
最后,不能使用此选项删除分区表上的索引。
对于临时表,DROP INDEX
始终是非并发的,因为没有其他会话可以访问它们,而且非并发的索引移除代价更小。
IF EXISTS
如果该索引不存在则不要抛出一个错误,而是发出一个提示。
name
要移除的索引名称(可以是模式限定的)。
tbname
要删除的索引的表名(可选的表名)。但这是一种语法糖,相当于不使用` ON tbname `。
CASCADE
自动删除依赖于该索引的对象,然后删除所有 依赖于那些对象的对象(见Section 6.14)。
RESTRICT
如果有任何对象依赖于该索引,则拒绝删除它。这是默认值。
这个命令将移除索引title_idx
:
DROP INDEX title_idx;
DROP INDEX
是一个
LightDB语言扩展。在
SQL 标准中没有提供索引。