我正在开发一个需要在多个模式上使用hstore的项目.
安装hstore扩展的’public’模式在任何地方都不可用,因为我的范围不在’public’查找.在一些试用版中,我在名为“hstore”的模式上创建了扩展,并在所使用的每个可用范围(搜索路径)上使用了模式.
安装hstore扩展的’public’模式在任何地方都不可用,因为我的范围不在’public’查找.在一些试用版中,我在名为“hstore”的模式上创建了扩展,并在所使用的每个可用范围(搜索路径)上使用了模式.
基于此,我提出了一些问题:
>是否可以为扩展名创建架构?或者,最好是在每个模式上创建扩展(例如,customer_1,customer_2等等)?
>在单独的模式中创建扩展是否会影响数据的存储位置?我正在使用多个模式来使备份/恢复更容易,并且实际上不希望pg将所有hstore数据存储在单个模式的隐藏表(如blob的pg_large_objects)中.
每个数据库不允许多次安装扩展.引用
the manual on
原文链接:https://www.f2er.com/postgresql/192043.htmlCREATE EXTENSION
:
Remember that the extension itself is not considered to be within any
schema: extensions have unqualified names that must be unique
database-wide. But objects belonging to the extension can be within schemas.
如果您不想在search_path
中包含public,请将“public”扩展安装到专用架构中(例如:extensions).我会为所有这些使用单个模式,而不是每个扩展的单独模式. There are quite a few of them.CREATE EXTENSION
提供了一个安装到您选择的现有架构的选项:
CREATE EXTENSION hstore SCHEMA extensions;
并确保架构包含在可能想要使用它的用户的search_path中.
> How does the search_path influence identifier resolution and the “current schema”
数据存储完全不受扩展所在的架构的影响.