sql >> Databáze >  >> RDS >> PostgreSQL

Vložte více hodnot ENUM do PostgreSQL

Můžete použít CREATE TYPE deklarovat svůj výčet:

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

A použijte pole pro uložení hodnot:

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

Chcete-li vložit:

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

Nebo

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

Dalším přístupem by bylo použití jiné tabulky k uložení výčtů a cizího klíče k tabulce foo. Příklad:

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

A vloží více hodnot do 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. Zobrazení dat z více dotazů v jednom výsečovém grafu pomocí značky cfchart

  2. Jak zachytit a znovu zahodit všechny chyby v MySQL

  3. hromadné změny typů sloupců v MySQL

  4. Jak získat OBJECT_NAME() z jiné databáze na SQL Server