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

Indsæt flere ENUM-værdier i PostgreSQL

Du kan bruge CREATE TYPE for at erklære din enum:

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

Og brug en array af den for at gemme værdierne:

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

For at indsætte:

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

Eller

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

En anden tilgang ville være at bruge en anden tabel til at gemme enums og en fremmednøgle til foo-tabellen. Eksempel:

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

Og de indsætter de flere værdier 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. hvordan man indstiller standardværdi for teksttype i mysql

  2. #1062 - Dublet indtastning 0' for nøglen 'PRIMARY'

  3. Hvordan kan jeg forhindre Postgres i at indsætte en underforespørgsel?

  4. Hvordan opretter jeg forbindelse til en MySQL-database i Python?