PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Inserir vários valores ENUM no PostgreSQL


Você pode usar CREATE TYPE para declarar seu enum:
CREATE TYPE tfoo AS ENUM('foo','bar','dummy');

E use um matriz dele para armazenar os valores:
CREATE TABLE foo (foo_id serial, foo_enum tfoo[]);

Inserir:
INSERT INTO foo(foo_enum) VALUES('{foo,bar}');

Ou
INSERT INTO foo(foo_enum) VALUES(ARRAY['foo','bar']::tfoo[]);

Outra abordagem seria usar outra tabela para armazenar as enumerações e uma chave estrangeira na tabela foo. Exemplo:
CREATE TABLE foo (foo_id serial primary key);
CREATE TABLE foo_enums (foo_id integer references foo(foo_id), value tfoo);

E eles inserem os vários valores em 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');