我正在使用由脚本( Osm2pgsql )创建的 postgres 数据库。它创建了一些类型为_text
的二维数组的字段text
。我试图理解为什么它不只是创建一个text[][]
字段,以及为什么这种类型存在于 postgres 中。
我可以在文档中找到这个链接,其中写着:
当您定义新的基本类型时,PostgreSQL 会自动提供对该类型数组的支持。数组类型通常与基类型具有相同的名称,并在前面添加下划线字符 (_)。
但我不明白为什么当文本是 postgres 的内置类型时它使用这个“下划线”类型名称?
_text
并且text[]
在 PostgreSQL 中可以互换。也是text[][]
相同的数据类型。
为了让事情更清楚:type[]
表示“元素为类型的数组类型type
”,该类型的实际名称是_type
。选择名称的原因是,当创建类型时,也会创建关联的数组类型。该内部数组类型的名称是通过使用makeArrayTypeName
类型名称作为参数调用 C 函数来确定的。这又调用makeUniqueTypeName
,其代码注释描述了它的作用:
/*
* makeUniqueTypeName
* Generate a unique name for a prospective new type
*
* Given a typeName, return a new palloc'ed name by prepending underscores
* until a non-conflicting name results.
*
* If tryOriginal, first try with zero underscores.
*/
Run Code Online (Sandbox Code Playgroud)
原则上,重命名为其他名称是没有问题的_type
,但 PostgreSQL 为了避免混淆而禁止这样做。
归档时间: |
|
查看次数: |
7380 次 |
最近记录: |