Изменить размер поля

Sehensucht!
Дата: 20.11.2003 14:09:05
Товарищи, а как изменить размер поля с varchar(50) на varchar(255) через системные таблицы? (таблица очень большая и 4 апдейта будут очень не кстати)
Vel
Дата: 21.11.2003 12:38:41
Тем что ты изменишь системные таблицы ты можешь вообще разрушить базу.
Тебе поможет только update.
Кстати, вместо update рекомендую использовать insert into в таблицу с измененным размерами. Залил, наложил индексы, старую убил, новую переименовал. Работает намного быстрее чем update. А системные таблицы не трогай
Sehensucht!
Дата: 21.11.2003 16:17:07
Так мне надо-то всего ничего :) -- заменить варчар(50) на варчар(255). Так что только через системные хочу :)
Vel
Дата: 21.11.2003 16:28:00
Ну если базу не жалко, то можешь попробовать. Все равно ничего не выйдет
Vel
Дата: 21.11.2003 16:30:23
Ну если базу не жалко, то можешь попробовать. Все равно ничего не выйдет
Sehensucht!
Дата: 21.11.2003 18:33:58
Короче так:

- есть имя таблицы (my_tbl)
- есть имя столбца (my_fld)
- N = select relfilenode from pg_class where relname = 'my_tbl'
- M = select atttypmod from pg_attribute where attrelid = N and attname = 'my_fld'

В итоге M=длина_варчара+4

Т.е., если поменять указанный atttypmod на 259, то в итоге получим varchar(255) для заданного поля заданной таблицы.

Стремно это испытывать... :)