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制約を追加しました。
構文は、2番目のバリアント のマニュアルでCREATE TABLE
としてドキュメント化されています。
OF
type_name型付き表を作成します。これは、指定された複合型(オプションでスキーマ修飾された名前)から構造を取得します。型付きテーブルはその型に関連付けられています。たとえば、型が削除されると、テーブルが削除されます(
DROP TYPE ... CASCADE
を使用)。型付き表が作成されると、列のデータ型は基礎となる複合型によって決定され、
CREATE TABLE
コマンドでは指定されません。ただし、CREATE TABLE
コマンドは、デフォルトと制約をテーブルに追加し、ストレージパラメータを指定できます。
(Erwinが説明しているように)特定の複合型でテーブルを作成するのか、1つの含む複合型でテーブルを作成するのかはわかりません。
後者の場合、それはほとんど同じです。
create type typename as( ...)
その後
create table example (
row_name typename
)
通常、次のような列が多くなります。
create table example (
id serial primary key,
some_composite typename,
parent_id integer not null references parenttable(id),
.... more columns ...
)