PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Insérer plusieurs valeurs ENUM dans PostgreSQL

Vous pouvez utiliser CREATE TYPE pour déclarer votre enum :

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

Et utilisez un tableau de celui-ci pour stocker les valeurs :

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

Pour insérer :

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

Ou

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

Une autre approche consisterait à utiliser une autre table pour stocker les énumérations et une clé étrangère vers la table foo. Exemple :

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

Et ils insèrent les valeurs multiples dans 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');