sql >> Database >  >> RDS >> PostgreSQL

Voeg meerdere ENUM-waarden in PostgreSQL in

U kunt CREATE TYPE gebruiken om je opsomming te declareren:

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

En gebruik een array ervan om de waarden op te slaan:

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

Invoegen:

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

Of

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

Een andere benadering zou zijn om een ​​andere tabel te gebruiken om de opsommingen en een externe sleutel voor de foo-tabel op te slaan. Voorbeeld:

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

En ze voegen de meerdere waarden in 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. Hoe continu iets te verwijderen dat ouder is dan de 10 newst-items van een MySQL-database (mogelijk in JPQL/JPA)

  2. 12c Verouderde functies

  3. Hoe kan ik een partitie van de ene tabel in een andere in Oracle importeren?

  4. Oracle SQL zoek teken ¡ in gegevens