ALTER EXTENSION

From PostgreSQL wiki
Jump to navigationJump to search
名字

ALTER EXTENSION -- 修改一个扩展的定义

语法概要
   ALTER EXTENSION extension_name UPDATE [ TO new_version ]
   ALTER EXTENSION extension_name SET SCHEMA new_schema
   ALTER EXTENSION extension_name ADD member_object
   ALTER EXTENSION extension_name DROP member_object
   
   where member_object is:
   
     AGGREGATE agg_name (agg_type [, ...] ) |
     CAST (source_type AS target_type) |
     COLLATION object_name |
     CONVERSION object_name |
     DOMAIN object_name |
     FOREIGN DATA WRAPPER object_name |
     FOREIGN TABLE object_name |
     FUNCTION function_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |
     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
描述

ALTER EXTENSION 改变一个已经安装的扩展的定义。有以下几种形式:

UPDATE
这个形式将扩展升级至新版本。扩展必须提供一个(或几个)可以将当前已安装版本修改至新版本的脚本。
SET SCHEMA
这个形式将扩展的对象移动到另一个模式中去。要成功执行这个命令,扩展需是可重定位的。
ADD member_object
这个形式将一个已有对象添加进扩展。该形式在扩展升级脚本中非常有用。添加之后对象被作为扩展的一个成员;值得注意的是,要丢弃这个对象的话,只能丢弃整个扩展。
DROP member_object
这个形式将成员对象从扩展中移除。该形式在扩展升级脚本中非常有用。该对象并没有被丢弃,只是从扩展中移除出去。

关于这些操作的更多信息可以参见35.15节。

你必须具有扩展的所有权才能执行ALTER EXTENSION命令。ADD/DROP命令需要被添加或移除对象的所有权。

参数
extension_name
已装扩展的名字。
new_version
扩展希望升至的新版本。这个参数可以是一个标示符也可以是字符串字面量。如果没有指定这个参数,ALTER EXTENSION UPDATE 将扩展升级至扩展控制文件中指定的缺省版本。
new_schema
扩展的新模式。
object_name
agg_name
function_name
operator_name
扩展将要添加或移除的对象的名字。表,聚集函数,域,外部表,函数,操作符,操作符类,操作符族,序列,文本检索对象,类型,视图等对象的名字,可以用模式修饰。
agg_type
聚集函数操作的输入数据的数据类型。要表示某个0个参数的聚集函数,在输入类型列表中添 * 。
source_type
强制类型转换的源数据类型。
target_type
强制类型转换的目标数据类型。
argmode
函数参数的模式:IN,OUT,INOUT,VARIADIC。如果不指定该参数,默认为IN。注意,ALTER EXTENSION实际上不会处理OUT模式的参数,因为只有输入参数才会作为函数签名的一部分来标识函数实体。因此,列出IN,INOUT,VARIDIC模式就足够了。
argname
函数参数的名字。注意,ALTER EXTENSION实际上不会处理参数名字,因为只有参数的数据类型才会作为函数的签名的一部分来标识函数实体。
argtype
函数参数的数据类型,如果有模式的话可以使用模式进行修饰。
left_type
right_type
操作符的数据类型,可以使用模式进行修饰。前缀或后缀操作符对应(左和右)的缺少部分应该添NONE。
PROCEDURAL
这个参数没必要存在。
示例

将hstore扩展升级至2.0版:

   ALTER EXTENSION hstore UPDATE TO '2.0';

将hstore扩展的模式改为utils:

   ALTER EXTENSION hstore SET SCHEMA utils;

将一个已有函数添加进hstore扩展:

   ALTER EXTENSION hstore ADD FUNCTION populate_record(anyelement, hstore);
兼容性

ALTER EXTENSION 是PostgreSQL扩展。

参见

CREATE EXTENSION, DROP EXTENSION