gpt4 book ai didi

sql - 什么是 PostgreSQL 中的类型表?我怎样才能制作这样的 table ?

转载 作者:行者123 更新时间:2023-11-29 11:56:12 25 4
gpt4 key购买 nike

在研究 information_schema View 时,我注意到表的以下属性:

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...

参见 https://www.postgresql.org/docs/current/static/infoschema-tables.html .

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

什么是类型表?我怎样才能创建这样的表?

最佳答案

它正在根据类型创建表格。每the documentation :

OF type_name Creates a typed table, which takes its structure from the specified composite type (name optionally schema-qualified). A typed table is tied to its type; for example the table will be dropped if the type is dropped (with DROP TYPE ... CASCADE).

When a typed table is created, then the data types of the columns are determined by the underlying composite type and are not specified by the CREATE TABLE command. But the CREATE TABLE command can add defaults and constraints to the table and can specify storage parameters.

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


创建表(SQLFiddle Example)

第 1 步:创建类型

CREATE TYPE people_type AS ( age INT, name TEXT, dob DATE );

第 2 步:创建表

CREATE TABLE sales_staff   OF people_type;
CREATE TABLE service_staff OF people_type;

第 3 步:更改类型

ALTER TYPE people_type ADD ATTRIBUTE gender CHAR CASCADE;

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

关于sql - 什么是 PostgreSQL 中的类型表?我怎样才能制作这样的 table ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51341682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com