什么是PostgreSQL中的类型化表?我怎么做这样的桌子?

什么是PostgreSQL中的类型化表?我怎么做这样的桌子?,sql,postgresql,Sql,Postgresql,在研究information\u schema视图时,我注意到表的以下属性: is_typed YES if the table is a typed table, NO if not user_defined_type_catalog If the table is a typed table, the name of the database... user_defined_type_schema If the table is a typed table

在研究
information\u schema
视图时,我注意到表的以下属性:

is_typed                  YES if the table is a typed table, NO if not
user_defined_type_catalog If the table is a typed table, the name of the database...
user_defined_type_schema  If the table is a typed table, the name of the schema...
user_defined_type_name    If the table is a typed table, the name of the data type...

我从未听说过这样的概念。我一直在查阅文档,但找不到更多信息


什么是打字表格?如何创建这样的表?

它是从一个类型创建一个表。Per:

类型名称 创建一个类型化表,该表从指定的复合类型(名称(可选)获取其结构。键入的表与其类型绑定;例如,如果删除类型(使用DROP type…CASCADE),则该表将被删除

创建类型化表时,列的数据类型由基础复合类型确定,而不是由CREATETABLE命令指定。但是createtable命令可以向表中添加默认值和约束,并可以指定存储参数

基本上,当您创建一个表时(例如,使用
create type
语句),您可以从该类型创建一个表。当您级联类型的更改(更改列或删除类型)时,它会影响使用该类型生成的所有表,这意味着您可以有许多以相同方式构造的表。这有助于日志记录、复制、ETL过程等


创建表() 步骤1:创建类型 步骤2:创建表 步骤3:改变类型

更改类型后,您将能够看到这两个表都受到了影响。这可以通过在psql中使用
\d
或查询数据库中的INFORMATION\u SCHEMA.COLUMNS表来实现,如上面SQLFIDLE链接中的示例所示。

非常棒的功能!我很感激你的回答。
CREATE TYPE people_type AS ( age INT, name TEXT, dob DATE );
CREATE TABLE sales_staff   OF people_type;
CREATE TABLE service_staff OF people_type;
ALTER TYPE people_type ADD ATTRIBUTE gender CHAR CASCADE;