多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 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](#calibre_link-99) `SET (` `_storage_parameter_` = `_value_` [, ... ] ) 这个选项会改变索引的一个或多个索引方法特定的存储参数。参见[CREATE INDEX](#calibre_link-83)获取可用参数的细节。 需要注意的是索引内容不会被这个命令立即修改,根据参数的不同, 你可能需要使用[REINDEX](#calibre_link-614)重建索引来获得期望的效果。 `RESET (` `_storage_parameter_` [, ... ] ) 这个选项重置索引的一个或多个索引方法特定的存储参数为缺省值。 与`SET`一样,可能需要使用`REINDEX`来完全更新索引。 ## 参数 `_name_` 要修改的索引的名字(可以有模式修饰)。 `_new_name_` 索引的新名字。 `_tablespace_name_` 索引将移动到的表空间的名字。 `_storage_parameter_` 索引方法特定的存储参数的名字。 `_value_` 索引方法特定的存储参数的新值。根据参数的不同,这可能是一个数字或单词。 ## 注意 这些操作也可以用[ALTER TABLE](#calibre_link-88)进行。 `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扩展。 ## 参见 [CREATE INDEX](#calibre_link-83), [REINDEX](#calibre_link-614)