🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 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](#calibre_link-367). 现在可以安装的扩展可以在[`pg_available_extensions`](#calibre_link-953) 或者[`pg_available_extension_versions`](#calibre_link-952)找到. 关于写一个扩展信息,可以查看[Section 35.15](#calibre_link-840). ## 例子 在当前数据库安装[hstore](#calibre_link-382)扩展: ``` CREATE EXTENSION hstore; ``` 升级一个9.1安装的`hstore` : ``` CREATE EXTENSION hstore SCHEMA public FROM unpackaged; ``` 注意指定你在哪个模式安装过 `hstore` . ## 兼容性 `CREATE EXTENSION`是PostgreSQL的一个扩展. ## 相关内容 [ALTER EXTENSION](#calibre_link-573), [DROP EXTENSION](#calibre_link-46)