Postgresql

使用複合類型創建新表

  • September 25, 2015

在 ORDBMS 數據庫中,我看到可以使用複雜類型:

create type name as( ...)

我可以在創建新表時引用這些類型,例如:

create table example (row_name ref(name))

我怎樣才能在 PostgreSQL 中達到同樣的效果?

您可以使用類型表

CREATE TYPE mytype AS (some_id int, some_col text);

CREATE TABLE example **OF mytype** (PRIMARY KEY (some_id));

我添加了一個 PK 約束(你沒有要求)。

該語法在手冊中CREATE TABLE被記錄為第二個變體,這也進一步解釋了:

OF 類型名稱

創建一個類型化表,該表從指定的複合類型(名稱可選模式限定)中獲取其結構。類型表與它的類型相關聯;例如,如果類型被刪除(使用DROP TYPE ... CASCADE),則表將被刪除。

創建類型表時,列的數據類型由基礎複合類型確定,而不由CREATE TABLE命令指定。但是該CREATE TABLE命令可以為表添加預設值和約束,並且可以指定儲存參數。

範例部分的末尾還有一個程式碼範例

引用自:https://dba.stackexchange.com/questions/116087