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的一个扩展.