Postgresql
使用複合類型創建新表
在 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
命令可以為表添加預設值和約束,並且可以指定儲存參數。範例部分的末尾還有一個程式碼範例。