Для чего использовать domain?

kavenchuk
Дата: 04.10.2004 16:47:28
Только для красоты? Ведь менять тип а-ля UPDATE CASCADE не дает...
Разве что можно попытаться написать для этого спец. процедуру: по ссылкам поменять все поля на новый тип и запомнить ссылки, удалить domain, создать с новым типом, пройтись по запомненным ссылкам и поменять тип на domain...
Последний пункт pg мне делать не дает. Хоть domain и тип поля одинаковые.

Можно конечно сначала пройтись по полям, зпомнить/откючить costraint-ы, создать новое поле, скопировать данные, переименовать поля, удалить старые, создать constraint-ы... IMHO, не каждый день структура меняется - незачем и огород городить.

Но тогда зачем вообще domain?

--
С уважением,
Ярослав Кавенчук
ilejn
Дата: 04.10.2004 18:20:57
kavenchuk
Только для красоты? Ведь менять тип а-ля UPDATE CASCADE не дает...
Разве что можно попытаться написать для этого спец. процедуру: по ссылкам поменять все поля на новый тип и запомнить ссылки, удалить domain, создать с новым типом, пройтись по запомненным ссылкам и поменять тип на domain...
Последний пункт pg мне делать не дает. Хоть domain и тип поля одинаковые.

Можно конечно сначала пройтись по полям, зпомнить/откючить costraint-ы, создать новое поле, скопировать данные, переименовать поля, удалить старые, создать constraint-ы... IMHO, не каждый день структура меняется - незачем и огород городить.

Но тогда зачем вообще domain?

--
С уважением,
Ярослав Кавенчук


Более-менее разумный пример использования содержится в документации
CREATE DOMAIN us_postal_code AS TEXT
CHECK(
VALUE ~ '^\d{5}$'
OR VALUE ~ '^\d{5}-\d{4}$'
);
Плохое использование может быть вызвано неудачной схемой
хранения данный, когда в одном поле пытаются хранить принципиально
разные вещи.