Можно ли создать ENUM из smallints в postgres 11.x? - PullRequest
1 голос
/ 05 марта 2020

Я хотел бы создать тип перечисления, чтобы ограничить функцию pl / pg sql для принятия аргумента, равного 1, 2 или 3. Типы перечисления выглядят как способ go по этому поводу.

Я пытался создать мой enum, как показано ниже:

CREATE TYPE my_enum AS ENUM ('1'::smallint, '2'::smallint);
/*                           ^ syntax error here         */

1 Ответ

1 голос
/ 05 марта 2020

Согласно документации PostgreSQL , тип ENUM всегда будет фиксированным значением:

Значение enum занимает четыре байта на диске. Длина текстовой метки значения перечисления ограничена настройкой NAMEDATALEN, скомпилированной в PostgreSQL; в стандартных сборках это означает максимум 63 байта.

Следовательно, вы не можете преобразовать его в smallint - извините!

Вместо этого, я полагаю, вы можете создать справочную таблицу и создайте ограничение внешнего ключа, если вам нужно пространство.

Раскрытие информации: я работаю на EnterpriseDB (EDB)

...