ALTER EXTENSION
扩展功能为内部使用功能,不建议用户使用。
功能描述
修改已安装扩展的定义。
注意事项
- UPDATE
更新这个扩展到一个新的版本。这个扩展必须满足一个适用的更新脚本(或者一系列脚本), 才能修改当前安装版本到一个要求的版本。
- SET SCHEMA
- ADD member_object
- DROP member_object
从扩展上移除一个成员对象。主要适用于扩展更新脚本上,这个对象没有被取消,只是从扩展里被移除。
您必须拥有扩展来使用 ALTER EXTENSION。这个 ADD/DROP 方式要求 添加/删除对象的所有权。
要使用该功能,需要设置support_extended_features为true。
语法格式
- 修改扩展的版本。
ALTER EXTENSION name UPDATE [ TO new_version ];
- 修改扩展的模式。
ALTER EXTENSION name SET SCHEMA new_schema;
- 添加或删除扩展的成员对象。
ALTER EXTENSION name { ADD | DROP } member_object;
其中成员对象member_object写法为:
{AGGREGATE agg_name (agg_type [, ...] ) | CAST (source_type AS target_type) | COLLATION object_name | CONVERSION object_name | DOMAIN object_name | EVENT TRIGGER object_name | FOREIGN DATA WRAPPER object_name | FUNCTION function_name ( [ [ argname ] [ argmode ] argtype [, ...] ] ) | MATERIALIZED VIEW object_name | OPERATOR operator_name (left_type, right_type) | OPERATOR CLASS object_name USING index_method | OPERATOR FAMILY object_name USING index_method | [ PROCEDURAL ] LANGUAGE object_name | SCHEMA object_name | SEQUENCE object_name | SERVER object_name | TABLE object_name | TEXT SEARCH CONFIGURATION object_name | TEXT SEARCH DICTIONARY object_name | TEXT SEARCH PARSER object_name | TEXT SEARCH TEMPLATE object_name | TYPE object_name | VIEW object_name}
参数说明
- name
已安装扩展的名称。
- new_version
扩展的新版本。可以通过被标识符和字面字符重写。如果不指定的扩展的新版本,ALTER EXTENSION UPDATE会更新到扩展的控制文件中显示的默认版本。
- new_schema
扩展的新模式。
- object_name
agg_name
function_name
operator_name
从扩展里被添加或移除的对象的名称。包含表、聚合 、域、外链表、函数、操作符、操作符类、操作符族、序列、文本搜索对象、类型和能被模式合格的视图的名称。
- agg_type
在聚合函数操作上的一个输入数据类型,去引用一个零参数聚合函数,写 * 代替这些输入数据类型列表。
- source_type
强制转换的源数据类型的名称。
- target_type
强制转换的目标数据类型的名称。
- argmode
这个函数参数的模型:IN、OUT、INOUT或者 VARIADIC。如果省略的话,默认值为IN。ALTER EXTENSION 不关心OUT参数,因为确认函数的一致性只需要输入参数,因此列出 IN、INOUT和 VARIADIC参数就足够了。
- argname
函数参数的名称。ALTER EXTENSION不关心参数名称,确认函数的一致性只需要参数数据类型。
- argtype
函数参数的数据类型(可以有模式修饰)。
- left_type
right_type
操作符参数的数据类型(可以有模式修饰),为前缀或后缀运算符的丢失参数写NONE。
示例
更新 plpgsql 扩展到版本 2.0:
gaussdb=# ALTER EXTENSION plpgsql UPDATE TO '2.0';
--创建SCHEMA。 gaussdb=# CREATE SCHEMA utils; --删除SCHEMA。 gaussdb=# DROP SCHEMA utils;
更新 plpgsql 扩展的模式为utils:
--创建SCHEMA。 gaussdb=# CREATE SCHEMA utils; --更新 plpgsql 扩展的模式为utils。 gaussdb=# ALTER EXTENSION plpgsql SET SCHEMA utils; --删除SCHEMA。 gaussdb=# DROP SCHEMA utils;
添加一个已存在的函数给 plpgsql 扩展:
gaussdb=# ALTER EXTENSION plpgsql ADD FUNCTION populate_record(anyelement, plpgsql);