↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1
历史版本。 PostgreSQL 9.3 已结束支持。 2018-11-08. 请参阅 当前版本手册.

CREATE EXTENSION

CREATE EXTENSION — 安装一个扩展

大纲

CREATE EXTENSION [ IF NOT EXISTS ] extension_name
    [ WITH ] [ SCHEMA schema_name ]
             [ VERSION version ]
             [ FROM old_version ]

描述

CREATE EXTENSION将一个新扩展装载到当前数据库中。同名扩展不能已经被装载。

装载一个扩展本质上就是运行该扩展的脚本文件。该脚本通常会创建新的 SQL 对象,例如函数、数据类型、操作符以及索引支持方法。CREATE EXTENSION还会记录所有已创建对象的标识,这样在发出DROP EXTENSION时就可以将它们一并删除。

加载扩展需要与创建其组件对象所需的权限相同。对于大多数扩展,这意味着需要超级用户或数据库所有者权限。运行 CREATE EXTENSION 的用户将成为扩展的所有者,用于后续的权限检查,以及扩展脚本创建的任何对象的所有者。

参数

IF NOT EXISTS

如果已存在同名扩展,则不要抛出错误。这种情况下会发出一条提示。注意,这并不保证现有扩展与根据当前可用脚本文件本应创建出的扩展有任何相似之处。

extension_name

要安装的扩展名称。PostgreSQL将根据 SHAREDIR/extension/extension_name.control 文件中的详细信息创建该扩展。

schema_name

如果该扩展允许其内容被重定位,则这是安装该扩展所含对象的模式名称。指定的模式必须已经存在。如果未指定,并且扩展控制文件中也未指定模式,则使用当前默认的对象创建模式。

请记住,扩展本身不被视为属于任何模式:扩展的名称是非限定名,并且必须在整个数据库范围内唯一。但是,属于该扩展的对象可以位于模式中。

version

要安装的扩展版本。它可以写成标识符,也可以写成字符串常量。默认版本由扩展控制文件指定。

old_version

FROM old_version 必须在且仅在尝试安装一个替换“旧式”模块的扩展时指定,该模块仅是一组未打包为扩展的对象集合。此选项会导致 CREATE EXTENSION 运行一个替代安装脚本,将现有对象吸收进扩展中,而不是创建新对象。请确保 SCHEMA 指定的是包含这些现有对象的模式。

old_version的值由扩展作者决定,如果存在多个可升级为扩展的旧式模块版本,该值可能会有所不同。对于PostgreSQL 9.1 之前版本提供的标准附加模块,将模块更新为扩展形式时应使用unpackaged作为old_version的值。

注解

在使用 CREATE EXTENSION 将扩展装载到数据库之前,必须先安装好该扩展的支持文件。关于安装 PostgreSQL 随附扩展的信息,可见额外提供的模块。

当前可供装载的扩展可从系统视图 pg_available_extensions 或 pg_available_extension_versions 中查出。

关于编写新扩展的信息,见第 35.15 节。

示例

将 hstore 扩展安装到当前数据库中:

CREATE EXTENSION hstore;

将 PostgreSQL 9.1 之前版本中安装的hstore更新为扩展形式:

CREATE EXTENSION hstore SCHEMA public FROM unpackaged;

请注意指定安装现有hstore对象时所用的模式。

兼容性

CREATE EXTENSION 是 PostgreSQL 的扩展。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.