PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Inserisci più valori ENUM in PostgreSQL

Puoi utilizzare CREATE TYPE per dichiarare la tua enum:

CREATE TYPE tfoo AS ENUM('foo','bar','dummy');

E usa un array di esso per memorizzare i valori:

CREATE TABLE foo (foo_id serial, foo_enum tfoo[]);

Per inserire:

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

Oppure

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

Un altro approccio sarebbe l'utilizzo di un'altra tabella per memorizzare le enumerazioni e una chiave esterna nella tabella foo. Esempio:

CREATE TABLE foo (foo_id serial primary key);
CREATE TABLE foo_enums (foo_id integer references foo(foo_id), value tfoo);

E inseriscono i valori multipli 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');