ALTER INDEX
Name
ALTER INDEX -- 改变一个索引的定义
Synopsis
ALTER INDEX [ IF EXISTS ] _name_ RENAME TO _new_name_
ALTER INDEX [ IF EXISTS ] _name_ SET TABLESPACE _tablespace_name_
ALTER INDEX [ IF EXISTS ] _name_ SET ( _storage_parameter_ = _value_ [, ... ] )
ALTER INDEX [ IF EXISTS ] _name_ RESET ( _storage_parameter_ [, ... ] )
描述
ALTER INDEX
改变一个现有索引的定义。 它有几种子形式:
IF EXISTS
使用此选项,当索引不存在时不会抛出错误,只会有一个提示信息。
RENAME
RENAME
只改变索引的名字。对存储的数据没有影响。
SET TABLESPACE
这个选项会改变索引的表空间为指定表空间,并且把索引相关的数据文件移动到新的表空间里。 参见CREATE TABLESPACE
SET (
_storage_parameter_
= _value_
[, ... ] )
这个选项会改变索引的一个或多个索引方法特定的存储参数。参见CREATE INDEX获取可用参数的细节。 需要注意的是索引内容不会被这个命令立即修改,根据参数的不同, 你可能需要使用REINDEX重建索引来获得期望的效果。
RESET (
_storage_parameter_
[, ... ] )
这个选项重置索引的一个或多个索引方法特定的存储参数为缺省值。 与SET
一样,可能需要使用REINDEX
来完全更新索引。
参数
_name_
要修改的索引的名字(可以有模式修饰)。
_new_name_
索引的新名字。
_tablespace_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;
改变索引的占位因数(假定该索引方法支持它):
ALTER INDEX distributors SET (fillfactor = 75);
REINDEX INDEX distributors;
兼容性
ALTER INDEX
是PostgreSQL扩展。