Задать вопрос
telnov_magic
@telnov_magic
Между небом и омутом, между серпом и молотом

Как создать тип перечисления?

Здравствуйте! Хочу создать пользовательский тип данных, чтобы были значения от 10 до 200. Как это можно реализовать?
Почитал доку, ничего не понятно

Пишу так: create type name as range(). А что нужно передавать на вход?
  • Вопрос задан
  • 40 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Melkij
@Melkij
DBA Team для вашего PostgreSQL?
Чтож, зависит от того что именно вы хотите сделать.

PostgreSQL позволяет сделать полностью собственную реализацию типа данных. Которая будет себя вести так как вы захотите - но всю эту логику вы должны разработать сами на C. Потому у create type и довольно объёмная документация.

range типы - это диапазоны. Например, дата бронирования номера гостиницы. Таблица бронирований, одно поле с диапазоном дат tsrange и exclude constraint - всё, база проконтролирует, что даты бронирования не пересекаются.

перечисления - это обычно подразумеваются enum. Но для вашей задачи это не подходит. enum - это фиксированный набор из строк.

что-то похожее на штатные типы данных, но с ограничениями - вы хотели найти не create type, а create domain:
CREATE DOMAIN smallint_between_10and200 AS smallint CHECK(value >= 10 and value < 200);

Всё, теперь в таблицах вы можете использовать тип данных smallint_between_10and200, в который тем не менее записать что-то не из диапазона 10..200 будет невозможно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы