更新时间:2026-02-06 GMT+08:00
分享

CREATE EXTENSION

扩展功能为内部使用功能,不建议用户使用。当前仅支持对postgis、postgis_sfcgal、postgis_raster、postgis_topology、yukon_geomodel、yukon_geogridcoder、pkg_bpchar_opc以及tablefunc进行操作。

功能描述

安装一个扩展。

注意事项

  • 在使用CREATE EXTENSION安装扩展到数据库中之前,必须先安装好该扩展的支持文件。
  • CREATE EXTENSION命令安装一个新的扩展到一个数据库中,必须保证没有同名的扩展已经被安装。
  • 安装一个扩展意味着执行一个扩展的脚本文件,这个脚本会创建一个新的SQL实体,例如函数、数据类型、操作符和索引支持的方法。
  • 安装扩展需要拥有和创建扩展的组件对象相同的权限。对于大多数扩展这意味着需要数据库所有者的权限,对于后续的权限检查和该扩展脚本所创建的实体,运行CREATE EXTENSION命令的角色将变为扩展的所有者。
  • 如果数据库中存在与EXTENSION内同名的数据库对象(PACKAGE、同义词、操作符、目录、函数、存储过程、视图以及表)时,将会导致安装失败。
  • 数据库禁止直接创建扩展,因为扩展可能会引起非预期的错误,且在升级后面临不兼容的问题。如果需要创建扩展,需要设置enable_extension为true才能够创建。
  • 创建扩展时,如果enable_object_special_character为off,且扩展的脚本文件中使用"@extschema@",那么扩展的支持文件中schema参数的值不能包含[、"、$、'\以及]中任意特殊字符。

语法格式

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

参数说明

  • IF NOT EXISTS

    用于判断是否存在同名的扩展。如果数据库中已经存在一个同名的扩展,不会直接报错,而是会产生一个提示。请注意该参数不保证系统存在的扩展和现在脚本创建的扩展相同。

  • extension_name

    将被安装扩展的名字,数据库将使用文件SHAREDIR/extension/extension_name.control中的详细信息创建扩展。

  • schema_name

    扩展的实例被安装在该模式下,扩展的内容可以被重新安装。指定的模式必须已经存在,如果扩展的实例以及扩展的控制文件均未指定模式,则使用默认模式进行安装。

    扩展不属于任何模式,扩展在一个数据库范围内的名字不受限制,但是一个扩展的实例是属于一个模式的。

  • version

    安装扩展的版本,可以作为一个标识符或者字符串,默认的版本在扩展的控制文件中指定。

  • old_version

    当且仅当需要升级安装已有模块中不存在的内容时,才需要指定具体的old_version。通过CREATE EXTENSION FROM old_version命令运行安装脚本,将新的内容安装到已有模式的扩展中,而不是创建新的实体。特别说明,需要指定Schema为包含这些已存在实体的模式。

相关文档