PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# ALTER EXTENSION

## 名称

ALTER EXTENSION -- 修改扩展定义

## 大纲

    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 aggregate_name ( aggregate_signature ) |
      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

    and aggregate_signature is:

    * |
    [ argmode ] [ argname ] argtype [ , ... ] |
    [ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]

## 描述

`ALTER EXTENSION` 修改一个已安装的扩展的定义。这里有几种方式:

`UPDATE`

  这种方式更新这个扩展到一个新的版本。这个扩展必须满足一个适用的更新脚本(或者一系列脚本) 这样就能修改当前安装版本到一个要求的版本。

`SET SCHEMA`

  这种方式移动扩展对象到另一个模式。这个扩展必须relocatable 才能使命令成功。

`ADD `member_object``

  这种方式添加一个已存在对象到扩展。这主要在扩展更新脚本上有用。 这个对象接着会被视为扩展的成员；显而易见，该对象只能通过取消扩展来取消。

`DROP `member_object``

  这个方式从扩展上移除一个成员对象。主要在扩展更新脚本上有用。 这个对象没有被取消, 只是从扩展里分开了。

参考第 35.15 节 来获取更多有关这些操作的信息。

要使用 `ALTER EXTENSION`，你必须拥有该扩展。 `ADD`/`DROP`方式也要求添加/删除对象的所有权。

## 参数

`name`

  已安装扩展的名称。

`new_version`

  希望的扩展的新版本。这个能被标识符或字面字符重写。如果不是指定的， `ALTER EXTENSION UPDATE`尝试更新到在扩展的控制文件中显示的默认版本。

`new_schema`

  扩展的新模式。

`object_name`
`aggregate_name`
`function_name`
`operator_name`

  要添加到扩展里或从扩展中删除的对象的名字。表、聚合、域、外部表、函数、 操作符、操作符类、操作符族、序列、文本搜索对象、类型和可以被模式限定的视图的名字。

`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, DROP EXTENSION

上一页 | 起始页 | 下一页
ALTER EVENT TRIGGER | 上一级 | ALTER FOREIGN DATA WRAPPER