On this page
CREATE EXTENSION
创建扩展-安装扩展
Synopsis
CREATE EXTENSION [ IF NOT EXISTS ] extension_name
[ WITH ] [ SCHEMA schema_name ]
[ VERSION version ]
[ FROM old_version ]
[ CASCADE ]
Description
CREATE EXTENSION
将新的 extensions 加载到当前数据库中。不得已加载具有相同名称的 extensions。
加载扩展实质上等于运行扩展的脚本文件。该脚本通常将创建新的 SQL 对象,例如函数,数据类型,运算符和索引支持方法。 CREATE EXTENSION
还会记录所有已创建对象的标识,以便在发出DROP EXTENSION
时可以再次删除它们。
加载扩展需要与创建其组件对象相同的特权。对于大多数扩展,这意味着需要超级用户或数据库所有者特权。运行CREATE EXTENSION
的用户将成为扩展的所有者,以进行以后的特权检查,以及该扩展的脚本创建的任何对象的所有者。
Parameters
IF NOT EXISTS
- 如果已经存在具有相同名称的 extensions,请不要抛出错误。在这种情况下发出通知。请注意,不能保证现有 extensions 类似于从当前可用脚本文件创建的 extensions。
extension_name
- 要安装的 extensions。 PostgreSQL 将使用文件
SHAREDIR/extension/
*extension_name
*.control
中的详细信息创建 extensions。
- 要安装的 extensions。 PostgreSQL 将使用文件
schema_name
- 假定扩展允许其内容重定位,则在其中安装扩展对象的模式的名称。命名模式必须已经存在。如果未指定,并且扩展的控制文件也未指定架构,则使用当前的默认对象创建架构。
如果 extensions 在其控制文件中指定了schema
参数,则无法使用SCHEMA
子句覆盖该架构。通常,如果给出了SCHEMA
子句,则该错误将与 extensions 的schema
参数冲突。但是,如果还提供了CASCADE
子句,则* schema_name
发生冲突时将被忽略。给定的 schema_name
*将用于安装任何需要的 extensions,这些 extensions 在其控制文件中未指定schema
。
请记住,扩展本身不被认为在任何模式中:扩展具有非限定名称,这些名称必须在数据库范围内是唯一的。但是属于 extensions 的对象可以在模式内。
version
- 要安装的扩展程序的版本。可以将其写为标识符或字符串 Literals。默认版本是扩展的控制文件中指定的任何版本。
old_version
- 必须并且仅在以下情况下指定
FROM
*old_version
*:仅当您尝试安装扩展来替换“旧样式”模块时,该模块只是未打包到扩展中的对象的集合。此选项使CREATE EXTENSION
运行替代安装脚本,该脚本将现有对象吸收到扩展中,而不是创建新对象。注意SCHEMA
指定包含这些预先存在的对象的架构。
- 必须并且仅在以下情况下指定
old_version
*使用的值由扩展程序的作者确定,如果可以将多个旧版本的模块升级到扩展程序,则该值可能会有所不同。对于 9.1 之前的 PostgreSQL 随附的标准附加模块,在将模块更新为扩展样式时,请对old_version
*使用unpackaged
。
CASCADE
- 自动安装此扩展依赖的所有扩展(尚未安装)。它们的依存关系同样会递归自动安装。
SCHEMA
子句(如果提供)适用于以这种方式安装的所有扩展。该语句的其他选项不适用于自动安装的扩展程序;特别是,始终选择其默认版本。
- 自动安装此扩展依赖的所有扩展(尚未安装)。它们的依存关系同样会递归自动安装。
Notes
必须先安装扩展的支持文件,然后才能使用CREATE EXTENSION
将扩展加载到数据库中。可以在附加提供的模块中找到有关安装 PostgreSQL 提供的扩展的信息。
当前可用于加载的 extensions 可以从pg_available_extensions或pg_available_extension_versions系统视图中识别。
有关编写新 extensions 的信息,请参见Section 37.15。
Examples
将hstoreextensions 安装到当前数据库中:
CREATE EXTENSION hstore;
将hstore
的 9.1 之前的安装更新为扩展样式:
CREATE EXTENSION hstore SCHEMA public FROM unpackaged;
请小心指定安装现有hstore
对象的架构。
Compatibility
CREATE EXTENSION
是 PostgreSQL 扩展。