Datový typ enum v PostgreSQL vytvoříte příkazem CREATE TYPE ... AS ENUM ...
drop type if exists client; create type client as enum ('UNKNOWN', 'PERSON', 'COMPANY');
Pro testování si vytvoříme tabulku, kde jeden ze sloupců bude nově vytvořeného typu a vložíme si do tabulky nějaká data.
drop table if exists t_client_info; create table t_client_info( id bigint not null, client_type client, description text ); insert into t_client_info (id, client_type, description) values (1, 'PERSON', 'John Smith'), (2, 'COMPANY', 'Big Company'), (3, 'PERSON', 'Jack White'), (4, 'UNKNOWN', '');
Nová hodnota enumu se dá přidat jednoduše příkazem ALTER TYPE ... ADD VALUE ...
alter type client add value 'BANK'; insert into t_client_info (id, client_type, description) values (5, 'BANK', 'Bing Bank');
Pokud hodnota v enumu není, dostanete chybu
Error: ERROR: invalid input value for enum client: "NON_PROFIT" Position: 70 SQLState: 22P02 ErrorCode: 0
Seznam všech hodnot enumu dostanete následujícími dotazy
select enum_range(NULL::client); select unnest(enum_range(NULL::client));
Zdroje: