U kunt CREATE TYPE
gebruiken
om je opsomming te declareren:
CREATE TYPE tfoo AS ENUM('foo','bar','dummy');
En gebruik een array ervan om de waarden op te slaan:
CREATE TABLE foo (foo_id serial, foo_enum tfoo[]);
Invoegen:
INSERT INTO foo(foo_enum) VALUES('{foo,bar}');
Of
INSERT INTO foo(foo_enum) VALUES(ARRAY['foo','bar']::tfoo[]);
Een andere benadering zou zijn om een andere tabel te gebruiken om de opsommingen en een externe sleutel voor de foo-tabel op te slaan. Voorbeeld:
CREATE TABLE foo (foo_id serial primary key);
CREATE TABLE foo_enums (foo_id integer references foo(foo_id), value tfoo);
En ze voegen de meerdere waarden in 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');