изменить тип домена - PullRequest
       13

изменить тип домена

0 голосов
/ 18 февраля 2012

У меня есть тип домена varchar (35), и я хотел бы увеличить длину до 40.

Я могу создать новый домен и просто сделать таблицу ALTER TABLE ALTER COLUMN column TYPE new_domain;

Однако я должен сделать это для всех таблиц, которые используют домен.Есть ли способ использовать синтаксис ALTER DOMAIN для увеличения длины / изменения типа данных?

1 Ответ

3 голосов
/ 18 февраля 2012

Превосходящий дизайн будет иметь столбцы тип данных text, допускающие неограниченную длину текста.Если вам действительно нужно установить максимальную длину, добавьте ограничение CHECK, например:

ALTER TABLE tbl ADD CONSTRAINT tbl_col_len CHECK (length(col) < 41);

. Вы можете свободно изменять проверочное ограничение, не связываясь со столбцом или его типом данных.

То же самое относится и к доменам.Если вы применяете ограничение длины для домена с проверочным ограничением, вы можете свободно изменить его (конечно, все столбцы, использующие домен, должны соответствовать новым критериям. Для всех, насколько я знаю, вы не можете так же легко изменить базовый тип данных.


Имея такую ​​настройку, как ваша, вы также можете создать дамп базы данных, взломать дамп с помощью глобального поиска и замены для обмена всеми вхождениями домена (при условии, что все поля, использующие домен, соответствуют критериям) иперезагрузите дамп.

...