CREATE EXTENSION

Name

CREATE EXTENSION -- 安装一个扩展

Synopsis

CREATE EXTENSION [ IF NOT EXISTS ] _extension_name_
    [ WITH ] [ SCHEMA _schema_name_ ]
             [ VERSION _version_ ]
             [ FROM _old_version_ ]

描述

create extension 命令安装一个新的扩展到一个数据库中.必须保证没有同名的扩展已经被安装.

安装一个扩展意味着执行一个扩展的脚本文件.这个脚本会创建一个新的SQL实体,例如函数, 数据类型,操作符,和索引支持的方法.

安装扩展需要有和创建他的组件对象相同的权限.对于大多数扩展这意味着需要超户或者数据库所有者的权限. 对于后续的权限检查和该扩展脚本所创建的实体,运行CREARE EXTENSION命令的角色将变为扩展的所有者.

参数

IF NOT EXISTS

如果系统已经存在一个同名的扩展,不会报错.这种情况下会给出一个提示.请注意该参数不保证系统存在的扩展和现在脚本创建的扩展相同.

_extension_name_

   将被安装扩展的名字.PostgresQL从SHAREDIR/extension/``_extension_name_``.control这个文件安装扩展.

_schema_name_

扩展的实例被安装在该模式下,扩展的内容可以被重新安装.指定的模式必须已经存在.如果没有指定,扩展的控制文件也不指定一个模式,这样将使用默认模式.

注意扩展不认为它在任何模式里面:扩展在一个数据库范围内的名字是不受限制的,但是一个扩展的实例是属于一个模式的.

_version_

安装扩展的版本.这个可以写为一个标识符或者字符串.默认的版本在扩展的控制文件中指定.

_old_version_

当你想升级安装"old style" 模块中没有的内容时,你必须指定FROM _old_version_. 这个选项使CREATE EXTENSION 运行一个安装脚本将新的内容安装到扩展中,而不是创建一个新的实体.注意SCHEMA指定了包括这些已存在实体的模式.

_old_version_的值由扩展的作者决定,如果有多个旧的版本升级到一个扩展这个值可能会改变.对于pre-9.1PostgreSQL 提供的标准扩展,当升级扩展时使用unpackaged 代替_old_version_

注意

在你使用 CREATE EXTENSION去安装一个扩展到数据库之前,扩展所需的文件必须被安装.安装扩展所需的信息在Additional Supplied Modules.

现在可以安装的扩展可以在pg_available_extensions 或者pg_available_extension_versions找到.

关于写一个扩展信息,可以查看Section 35.15.

例子

在当前数据库安装hstore扩展:

CREATE EXTENSION hstore;

升级一个9.1安装的hstore :

CREATE EXTENSION hstore SCHEMA public FROM unpackaged;

注意指定你在哪个模式安装过 hstore .

兼容性

CREATE EXTENSION是PostgreSQL的一个扩展.

相关内容

ALTER EXTENSION, DROP EXTENSION