ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# ALTER EXTENSION ## Name ALTER EXTENSION --  修改扩展定义 ## Synopsis ``` ALTER EXTENSION _name_ UPDATE [ TO _new_version_ ] ALTER EXTENSION _name_ SET SCHEMA _new_schema_ ALTER EXTENSION _name_ ADD _member_object_ ALTER 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_ | EVENT TRIGGER _object_name_ | FOREIGN DATA WRAPPER _object_name_ | FOREIGN TABLE _object_name_ | FUNCTION _function_name_ ( [ [ _argmode_ ] [ _argname_ ] _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_ ``` ## 描述 `ALTER EXTENSION` 修改一个已安装的扩展的定义. 这里有几种方式: `UPDATE` 这种方式更新这个扩展到一个新的版本. 这个扩展必须满足一个适用的更新脚本(或者一系列脚本) 这样就能修改当前安装版本到一个要求的版本. `SET SCHEMA` 这种方式移动扩展对象到另一个模式. 这个扩展必须_relocatable_才能使命令成功. `ADD` `_member_object_` 这种方式添加一个已存在对象到扩展. 这主要在扩展更新脚本上有用. 这个对象接着会被视为扩展的成员; 显而易见,该对象只能通过取消扩展来取消 . `DROP` `_member_object_` 这个方式从扩展上移除一个成员对象. 主要在扩展更新脚本上有用 .这个对象没有被取消, 只是从扩展里分开了. 参考[Section 35.15](#calibre_link-840) 来获取更多有关这些操作的信息. 你必须拥有扩展来使用 `ALTER EXTENSION`. 这个 `ADD`/`DROP` 方式要求 添加/删除对象的所有权. ## 参数 `_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` . `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](#calibre_link-572), [DROP EXTENSION](#calibre_link-46)