功能描述
修改一个索引的参数。
语法格式
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 ]
参数说明
- IF EXISTS:如果索引不存在不报错仅提示;
- name:要修改的索引名,可以被模式修饰;
- new_name:新的索引名;
- tablespace_name:表空间的名字;
- extension_name:索引依赖的扩展名;
- storage_parameter:指定索引方法的存储参数;
- value:索引方法特定的存储参数的新值,根据参数的不同,这可能是一个数字或单词。
注意事项
ALTER INDEX的几种形式:
- RENAME
只改变索引的名字。对存储的数据没有影响。
- SET TABLESPACE
这个选项会改变索引的表空间为指定表空间,并且把索引相关的数据文件移动到新的表空间里。
- DEPENDS ON EXTENSION
将索引标记为依赖于扩展,如果扩展被删除,索引也将自动删除。
- SET ( storage_parameter = value [, ... ] )
改变索引的一个或多个索引方法特定的存储参数。 需要注意的是索引内容不会被这个命令立即修改,根据参数的不同,可能需要使用REINDEX重建索引来获得期望的效果。
- RESET ( storage_parameter [, ... ] )
重置索引的一个或多个索引方法特定的存储参数为缺省值。与SET一样,可能需要使用REINDEX来完全更新索引。
范例
ALTER INDEX customer_idx RENAME TO gcustomer_idx;
ALTER INDEX
语法兼容
ALTER INDEX是一种 PostgreSQL扩展。
相关语法
CREATE INDEX, DROP INDEX, REINDEX
功能描述
修改过程语言的参数。
语法格式
ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO new_name
ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
参数说明
- name:语言的名称;
- new_name:该语言的新名称;
- new_owner:该语言的新所有者。
语法兼容
在 SQL 标准中没有ALTER LANGUAGE语句。
相关语法
CREATE LANGUAGE, DROP LANGUAGE
功能描述
修改物化视图的参数。
语法格式
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
action [, ... ]
ALTER MATERIALIZED VIEW name
DEPENDS ON EXTENSION extension_name
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
RENAME [ COLUMN ] column_name TO new_column_name
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
RENAME TO new_name
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
SET SCHEMA new_schema
ALTER MATERIALIZED VIEW ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
SET TABLESPACE new_tablespace [ NOWAIT ]
其中 action是下列之一:
ALTER [ COLUMN ] column_name SET STATISTICS integer
ALTER [ COLUMN ] column_name SET ( attribute_option = value [, ... ] )
ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
CLUSTER ON index_name
SET WITHOUT CLUSTER
SET ( storage_parameter = value [, ... ] )
RESET ( storage_parameter [, ... ] )
OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
参数说明
- name:现有的物化视图的名称,可以被模式修饰;
- column_name:新的或现有的列名;
- extension_name:该物化视图所依赖的扩展的名称;
- new_column_name:现有列的新名称;
- new_owner:新所有者的名称;
- new_name:该物化视图的新名称;
- new_schema:该物化视图的新模式。
注意事项
要使用ALTER MATERIALIZED VIEW,必须是物化视图的所有者。
范例
ALTER MATERIALIZED VIEW mv_customer RENAME TO gmv_customer;
ALTER MATERIALIZED VIEW
语法兼容
ALTER MATERIALIZED VIEW是一种 PostgreSQL扩展。
相关语法
CREATE MATERIALIZED VIEW, DROP MATERIALIZED VIEW, REFRESH MATERIALIZED VIEW
功能描述
修改一个节点的参数。ALTER NODE是集群管理工具封装的内部接口,用来实现集群管理,该接口不建议用户直接使用,以免对集群状态造成影响。
语法格式
ALTER NODE nodename WITH
(
[ TYPE = nodetype,]
[ HOST = hostname,]
[ PORT = portnum,]
[ PRIMARY [ = boolean],]
[ PREFERRED [ = boolean ] ]
)
参数说明
- nodename:节点名称;
- TYPE:节点类型,取值范围:Coordinator或Datanode;
- PRIMARY:声明该节点是否为主节点;
- PREFERRED:声明该节点是否为读操作的首选节点;
- nodetype:节点类型,取值范围:Coordinator或Datanode;
- hostname:集群节点名称或者IP地址;
- portnum:集群节点主机端口号;
注意事项
该接口不建议用户直接使用,以免对集群状态造成影响。
相关语法
功能描述
更改一个操作符的参数。
语法格式
ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } )
OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } )
SET SCHEMA new_schema
ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } )
SET ( { RESTRICT = { res_proc | NONE }
| JOIN = { join_proc | NONE }
} [, ... ] )
参数说明
- name:现有的操作符的名称,可以被模式修饰;
- left_type:这个操作符的左操作数(如果有)的数据类型,缺省情况下可以写成NONE;
- right_type:这个操作符的右操作数(如果有)的数据类型,缺省情况下可以写成NONE;
- new_owner:该操作符的新所有者;
- new_schema:该操作符的新模式;
- res_proc:用于这个操作符的限制选择度估计函数;
- join_proc:用于这个操作符的连接选择度估算函数;
注意事项
要使用ALTER OPERATOR,必须是操作符的所有者。
范例
ALTER OPERATOR @@ (text, text) OWNER TO gbase;
语法兼容
在 SQL 标准中没有ALTER OPERATOR语句。
相关语法
CREATE OPERATOR, DROP OPERATOR
功能描述
修改一个操作符类的参数。
语法格式
ALTER OPERATOR CLASS name USING index_method
RENAME TO new_name
ALTER OPERATOR CLASS name USING index_method
OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER OPERATOR CLASS name USING index_method
SET SCHEMA new_schema
参数说明
- name:现有操作符类的名称,可以被模式限定;
- index_method:这个操作符类所用于的索引方法的名称;
- new_name:该操作符类的新名称;
- new_owner:该操作符类的新所有者;
- new_schema:该操作符类的新模式。
注意事项
要使用ALTER OPERATOR CLASS,必须是操作符类的所有者。
语法兼容
在 SQL 标准中没有ALTER OPERATOR CLASS语句。
相关语法
CREATE OPERATOR CLASS, DROP OPERATOR CLASS, ALTER OPERATOR FAMILY, CREAT OPERATOR FAMILY, DROP OPERATOR FAMILY
功能描述
修改一个操作符族的参数。
语法格式
ALTER OPERATOR FAMILY name USING index_method ADD
{ OPERATOR strategy_number operator_name ( op_type, op_type )
[ FOR SEARCH | FOR ORDER BY sort_family_name ]
| FUNCTION support_number [ ( op_type [ , op_type ] ) ]
function_name [ ( argument_type [, ...] ) ]
} [, ... ]
ALTER OPERATOR FAMILY name USING index_method DROP
{ OPERATOR strategy_number ( op_type [ , op_type ] )
| FUNCTION support_number ( op_type [ , op_type ] )
} [, ... ]
ALTER OPERATOR FAMILY name USING index_method
RENAME TO new_name
ALTER OPERATOR FAMILY name USING index_method
OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER OPERATOR FAMILY name USING index_method
SET SCHEMA new_schema
参数说明
- name:现有的操作符族的名称,可以被模式修饰;
- index_method:操作符族所属的索引的名称;
- strategy_number:与该操作符族相关的操作符的索引方法策略号;
- operator_name:与该操作符族相关的操作符的名称,可以被模式修饰;
- op_type:在OPERATOR子句中指定该操作符的操作数数据类型;
- sort_family_name:B树操作符族的名称,可以被模式修饰,默认值FOR SEARCH;
- support_number:与操作符族相关的函数的索引的过程编号;
- function_name:该操作符族的索引支持的函数名称,可以被模式修饰;
- argument_type:该函数的参数数据类型;
- new_name:该操作符族的新名称;
- new_owner:该操作符族的新所有者;
- new_schema:该操作符族的新模式。
注意事项
OPERATOR和FUNCTION子句可以以任何顺序出现。
语法兼容
在 SQL 标准中没有 ALTER OPERATOR FAMILY语句。
相关语法
CREATE OPERATOR FAMILY, DROP OPERATOR FAMILY, CREATE OPERATOR CLASS, ALTER OPERATOR CLASS, DROP OPERATOR CLASS
功能描述
修改一条行级安全性策略的参数。
语法格式
ALTER POLICY name ON table_name RENAME TO new_name
ALTER POLICY name ON table_name
[ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ]
[ USING ( using_expression ) ]
[ WITH CHECK ( check_expression ) ]
参数说明
name:要更改的现有策略的名称;
table_name:该策略所在的表的名称,可以被模式修饰;
new_name:该策略的新名称;
role_name:该策略适用的角色,可以一次指定多个角色,或使用PUBLIC将策略应用与所有角色;
using_expression:该策略的USING表达式,详见CREATE POLICY;
check_expression:该策略的WITH CHECK表达式,详见CREATE POLICY。
注意事项
ALTER POLICY只允许修改策略所应用的角色集合以及USING和WITH CHECK表达式。要更改策略的其他属性,例如其应用的命令、允许还是限制等,则必须删除并重新创建策略。
语法兼容
ALTER POLICY是一种PostgreSQL扩展。
相关语法
功能描述
修改一个数据库角色的参数。
语法格式
ALTER ROLE role_specification [ WITH ] option [ ... ]
其中 option 可以是:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password'
| VALID UNTIL 'timestamp'
ALTER ROLE name RENAME TO new_name
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET configuration_parameter
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET ALL
其中 role_specification 可以是:
role_name
| CURRENT_USER
| SESSION_USER
参数说明
- name:要对其属性进行修改的角色的名称;
- CURRENT_USER:修改当前用户;
- SESSION_USER:修改当前会话用户;
- new_name:该角色的新名称;
- database_name:要设置该配置变量的数据库名称;
- configuration_parameter | value:设置角色的参数。ALTER ROLE中修改的会话参数只针对指定的角色,且在下一次该角色启动的会话中有效。取值详见SET。
其他参数CREATE ROLE。
注意事项
使用 DROP ROLE移除一个角色。
范例
ALTER ROLE gbasedbt WITH LOGIN;
ALTER ROLE
语法兼容
ALTER ROLE语句是一个 PostgreSQL扩展。
相关语法
CREATE ROLE, DROP ROLE, SET ROLE, ALTER DATABASE, ALTER GROUP, SET, ALTER USER
功能描述
修改一个规则参数。
语法格式
ALTER RULE name ON table_name RENAME TO new_name
参数说明
- name:要修改的现有规则的名称;
- table_name规则适用的表或者视图的名称,可以被模式修饰;
- new_name:该规则的新名称。
注意事项
当前仅支持更改规则名称。
语法兼容
ALTER RULE是一种 PostgreSQL的语言扩展。
相关语法




