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。
  • 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_extensionspg_available_extension_versions系统视图中识别。

有关编写新 extensions 的信息,请参见Section 38.16

Examples

hstoreextensions 安装到当前数据库中:

CREATE EXTENSION hstore;

hstore的 9.1 之前的安装更新为扩展样式:

CREATE EXTENSION hstore SCHEMA public FROM unpackaged;

请小心指定安装现有hstore对象的架构。

Compatibility

CREATE EXTENSION是 PostgreSQL 扩展。

See Also

ALTER EXTENSION, DROP EXTENSION