ALTER INDEX#

ALTER INDEX

ALTER INDEX — 更改一个索引的定义

大纲

ALTER INDEX [ IF EXISTS ] name RENAME TO new_name
ALTER INDEX name DEPENDS ON EXTENSION extension_name

描述

ALTER INDEX更改一个现有索引的定义。下面描述了几种子窗体。 注意每个子窗体所需的锁级别可能不同。除非显式说明,ACCESS EXCLUSIVE锁被持有。 列出多个子命令时,锁的持有将是任何子命令所需的最严格的子命令。

RENAME

RENAME形式更改该索引的名称。如果索引与一个表约束(UNIQUEPRIMARY KEY或者EXCLUDE)关联,该约束也会被重命名。这对已存储的数据没有影响。

重命名索引取得一个 SHARE UPDATE EXCLUSIVE锁。

DEPENDS ON EXTENSION

这种形式把该索引标记为依赖于扩展,这样如果该扩展被删除,该索引也将被 自动删除。

参数

IF EXISTS

如果该索引不存在不要抛出错误。这种情况下将发出一个提示。

``name``

要更改的一个现有索引的名称(可能被模式限定)。

``new_name``

该索引的新名称。

``extension_name``

该索引所依赖的扩展的名称。

注解

也可以用ALTER TABLE来做这些操作。实际上, ALTER INDEX只是ALTER TABLE应用在索引 上的形式的别名而已。

以前有一种ALTER INDEX OWNER变体,但现在已被忽略(会出现 一个警告)。一个索引的拥有者不能与其基表的拥有者不同。更改基表的拥有者 会自动地更改索引的拥有者。

不允许更改系统目录索引的任何部分。

示例

要重命名一个现有索引:

ALTER INDEX distributors RENAME TO suppliers;

兼容性

ALTER INDEX是一种 PostgreSQL扩展。