PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Fügen Sie mehrere ENUM-Werte in PostgreSQL ein

Sie können CREATE TYPE verwenden um Ihre Aufzählung zu deklarieren:

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

Und verwenden Sie ein Array davon, um die Werte zu speichern:

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

Einfügen:

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

Oder

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

Ein anderer Ansatz wäre die Verwendung einer anderen Tabelle zum Speichern der Enums und eines Fremdschlüssels für die foo-Tabelle. Beispiel:

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

Und sie fügen die mehreren Werte in foo_enums ein :

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');