sql >> Databasteknik >  >> RDS >> PostgreSQL

Infoga flera ENUM-värden i PostgreSQL

Du kan använda CREATE TYPE för att deklarera din enum:

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

Och använd en array av den för att lagra värdena:

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

För att infoga:

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

Eller

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

Ett annat tillvägagångssätt skulle vara att använda en annan tabell för att lagra enums och en främmande nyckel till foo-tabellen. Exempel:

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

Och de infogar de multipla värdena i 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');



  1. Relationella vs icke-relationella databaser:Vad är skillnaden?

  2. MySQL:Välja alla kolumner i en tabell plus en kolumn från samma tabell

  3. Varför MySQL konverterar automatiskt strängar till siffror?

  4. Använder Oracle-databaslänkar utan oläsbar dynamisk SQL