У меня есть столбец, который должен иметь 3 возможных значения (например, «A», «B», «C»).
Для таких вещей принято использовать enum, но поскольку во многих таблицах в моей БД такой столбец будет, я хотел бы определить значение по умолчанию ('C') для типа, представляющего это перечисление.
(AFAIK без каких-либо дополнительных определений, мне нужно написать что-то вроде этого:
%COLUMN% %ENUM_TYPE% NOT NULL DEFAULT enum_first(null::%ENUM_TYPE%),
каждый раз, когда мне нужно такое перечисление)
CREATE TYPE ...
оператор не позволяет определить значение по умолчанию, но CREATE DOMAIN ...
делает.
Я попробовал маленький трюк: CREATE TYPE zzz_enum AS ENUM (...); CREATE DOMAIN zzz AS zzz_enum DEFAULT 'A';
, но запрос со сравнением %zzz column% = 'A'
приводит к ошибке:
... operator %zzz% = undefined ...
Как определить оператор сравнения для домена «вручную» или создать собственный тип, который будет:
- Есть список возможных значений, которые я мог бы получить с помощью запроса
- Имейте одно из этих значений в качестве значения по умолчанию
- Будьте идентификатором, который я мог бы использовать как любой обычный тип SQL в определении таблицы
Заранее спасибо!