CREATE TYPE
列挙型を宣言するために使用できます。
CREATE TYPE tfoo AS ENUM('foo','bar','dummy');
そして、その配列を使用して値を保存します。
CREATE TABLE foo (foo_id serial, foo_enum tfoo[]);
挿入するには:
INSERT INTO foo(foo_enum) VALUES('{foo,bar}');
または
INSERT INTO foo(foo_enum) VALUES(ARRAY['foo','bar']::tfoo[]);
別のアプローチは、別のテーブルを使用して、列挙型と外部キーを foo テーブルに格納することです。例:
CREATE TABLE foo (foo_id serial primary key);
CREATE TABLE foo_enums (foo_id integer references foo(foo_id), value tfoo);
そして、複数の値をに挿入しますfoo_enums
:
INSERT INTO foo(foo_id) VALUES(nextval('foo_id_seq'));
INSERT INTO foo_enums(foo_id, value) VALUES
(currval('foo_id_seq'), 'foo'),
(currval('foo_id_seq'), 'bar');