其中公共架构在postgres中定义

时间:2013-04-09 00:01:01

标签: postgresql

我做了搜索,但无法得到明确的线索。 postgres中有“公共”架构。但架构的定义在哪里?我只在创建新数据库时看到它。我想知道的更多是它的定义以及如何改变它。

提前致谢。

2 个答案:

答案 0 :(得分:4)

初始化数据库集群时,public命令会在template0template1数据库中创建initdb模式。

创建新数据库时,除非指定其他模板,否则将复制(克隆)template1数据库以创建新数据库。模板数据库的所有内容都被复制,因此新数据库以public模式开始。

您可以自定义template1数据库 - 或者将新数据库用作模板,使用TEMPLATE命令的CREATE DATABASE选项指定它们。

请参阅the documentation on template databases

如果您想要自定义模板,我建议您将新数据库作为模板并根据需要进行自定义。 DROP架构public是完全合理的。

答案 1 :(得分:1)

正如你猜测的那样;它是在您创建数据库时创建的。

除了它是createdb之后的默认架构并且是默认的search_path之外,没有别的特别之处。您可以自由DROP它,创建另一个名为'public'或完全没有名为'public'的人。

确保您的search_path中有一些有用的内容,或者您​​最终可能需要整天输入完全限定的名称。