_text postgres 数据类型

_text postgres data type

我得到一个 table 类型为 _text

create table mt ( id int8,
directions _text null)

这不是我的代码,所以我不知道什么是 _text 类型以及如何使用它。 我在文档中寻找它 https://www.postgresql.org/docs/11/datatype.html 但是我没有找到。

我的问题是有人在 postgresql 中使用 _text 吗?我需要一个例子。

这是数组的内部类型名称。类似于 int8bigint 的内部名称。

所以你的说法是一样的:

create table mt 
(
  id bigint,
  directions text[]
)

我再也找不到引用了,但原因是 [] 在标识符中无效(类型名称 标识符)并且因此数组类型在 pg_type

中用 _ 前缀标识

这可以通过 pg_type 系统目录检测到:

select bt.typname as base_type, 
       at.typname as array_type
from pg_type bt
  join pg_type at on bt.typarray = at.oid
where bt.typnamespace = 'pg_catalog'::regnamespace  
order by bt.typname  

pg_type.typarray 链接到包含基本类型的数组类型的 pg_type 行。

Laurenz 在 Database Administrators 上回答了一个类似的问题,并提供了更多技术见解。