Вы можете использовать CREATE TYPE
, чтобы объявить перечисление:
CREATE TYPE tfoo AS ENUM('foo','bar','dummy');
И использовать array его для хранения значений:
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');
Ваш синтаксис совершенно неправильно. Идентификатор (имя столбца, имя таблицы) не нуждается ни в '' ', ни в том, что глупый обратный путь от MySQL. '' foo'' '* не * имя таблицы. Это строковый литерал (даже с MySQL). –