У меня есть столбец, который должен иметь 3 возможных значения (например, «A», «B», «C»). Обычным является использование перечисления для таких вещей, но поскольку многие таблицы в моей БД будут иметь такой столбец, я бы хотел определить значение по умолчанию ('C') для типа, представляющее это перечисление.postgres: перегрузка/добавление операторов сравнения в домен
(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 в определении таблицы
Спасибо заранее!
Вы не поняли вопрос. Он не ищет функциональность 'LIKE'. –
@ Петр: О, ты прав. Это должно быть ошибка, вероятно, приходится иметь дело с этим: http://archives.postgresql.org/pgsql-bugs/2008-01/msg00030.php – Quassnoi
Итак, ответ: я не могу сделать что-то вроде этого? Думаю, 'LIKE' будет слишком медленным для моей цели. Спасибо, в любом случае) – Eralde