Bạn có thể sử dụng CREATE TYPE
để khai báo enum của bạn:
CREATE TYPE tfoo AS ENUM('foo','bar','dummy');
Và sử dụng mảng của nó để lưu trữ các giá trị:
CREATE TABLE foo (foo_id serial, foo_enum tfoo[]);
Để chèn:
INSERT INTO foo(foo_enum) VALUES('{foo,bar}');
Hoặc
INSERT INTO foo(foo_enum) VALUES(ARRAY['foo','bar']::tfoo[]);
Một cách tiếp cận khác sẽ là sử dụng một bảng khác để lưu trữ các enum và một khóa ngoại vào bảng foo. Ví dụ:
CREATE TABLE foo (foo_id serial primary key);
CREATE TABLE foo_enums (foo_id integer references foo(foo_id), value tfoo);
Và chúng chèn nhiều giá trị vào 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');