↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 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
历史版本。 PostgreSQL 10 已结束支持。 2022-11-10. 请参阅 当前版本手册.

ALTER INDEX

ALTER INDEX — 更改索引的定义

大纲

ALTER INDEX [ IF EXISTS ] name RENAME TO new_name
ALTER INDEX [ IF EXISTS ] name SET TABLESPACE tablespace_name
ALTER INDEX name DEPENDS ON EXTENSION extension_name
ALTER INDEX [ IF EXISTS ] name SET ( storage_parameter [= value] [, ... ] )
ALTER INDEX [ IF EXISTS ] name RESET ( storage_parameter [, ... ] )
ALTER INDEX ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
    SET TABLESPACE new_tablespace [ NOWAIT ]

描述

ALTER INDEX 更改现有索引的定义。有几种子形式:

RENAME

RENAME 形式更改索引的名称。存储的数据不受影响。

SET TABLESPACE

该形式将索引的表空间更改为指定的表空间,并将与索引关联的数据文件移动到新表空间。要更改索引的表空间,必须拥有该索引,并在新表空间上拥有 CREATE 权限。可以使用 ALL IN TABLESPACE 形式移动当前数据库中某个表空间内的所有索引;该形式会锁定所有要移动的索引,然后逐个移动。该形式还支持 OWNED BY,只移动指定角色所拥有的索引。如果指定 NOWAIT 选项,而命令无法立即获取所需的全部锁,则会失败。请注意,该命令不会移动系统目录;如有需要,请改用 ALTER DATABASE 或显式调用 ALTER INDEX。另请参见 CREATE TABLESPACE。

DEPENDS ON EXTENSION

该形式将索引标记为依赖扩展,因此扩展被删除时索引也会自动删除。

SET ( storage_parameter [= value] [, ... ] )

该形式更改索引的一个或多个索引方法特定存储参数。有关可用参数的详情,请参见 CREATE INDEX。请注意,该命令不会立即修改索引内容;根据参数的不同,可能需要使用 REINDEX 重建索引才能达到预期效果。

RESET ( storage_parameter [, ... ] )

这种形式将一个或多个索引方法相关的存储参数重置为默认值。与 SET 一样,可能仍需要执行一次 REINDEX 才能让该索引被完全更新。

参数

IF EXISTS

如果该索引不存在,则不要抛出错误。这种情况下会发出一条提示。

name

要修改的现有索引名称(可以是模式限定的)。

new_name

该索引的新名称。

tablespace_name

该索引将被移动到的表空间。

extension_name

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

storage_parameter

一个索引方法相关的存储参数的名称。

value

一个索引方法相关的存储参数的新值。根据具体参数,它可能是数字或一个词。

注解

这些操作也可以使用 ALTER TABLE 完成。实际上,ALTER INDEX 只是 ALTER TABLE 中适用于索引的那些形式的别名。

以前曾有一种 ALTER INDEX OWNER 变体,但现在会被忽略(同时发出警告)。索引的拥有者不能不同于其所属表的拥有者。更改表的拥有者时,索引的拥有者也会自动更改。

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

示例

要重命名现有索引:

ALTER INDEX distributors RENAME TO suppliers;

要将索引移到另一个表空间:

ALTER INDEX distributors SET TABLESPACE fasttablespace;

要更改索引的填充因子(假设该索引方法支持 fillfactor 参数):

ALTER INDEX distributors SET (fillfactor = 75);
REINDEX INDEX distributors;

兼容性

ALTER INDEX 是一种 PostgreSQL 扩展。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.