Sie können CREATE TYPE
verwenden
um Ihre Aufzählung zu deklarieren:
CREATE TYPE tfoo AS ENUM('foo','bar','dummy');
Und verwenden Sie ein Array davon, um die Werte zu speichern:
CREATE TABLE foo (foo_id serial, foo_enum tfoo[]);
Einfügen:
INSERT INTO foo(foo_enum) VALUES('{foo,bar}');
Oder
INSERT INTO foo(foo_enum) VALUES(ARRAY['foo','bar']::tfoo[]);
Ein anderer Ansatz wäre die Verwendung einer anderen Tabelle zum Speichern der Enums und eines Fremdschlüssels für die foo-Tabelle. Beispiel:
CREATE TABLE foo (foo_id serial primary key);
CREATE TABLE foo_enums (foo_id integer references foo(foo_id), value tfoo);
Und sie fügen die mehreren Werte in foo_enums
ein :
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');