Как изменить тип поля (колонки) ?

Krisha

pain in the neck
Как изменить тип поля (колонки) ?

Необходимо изменить тип поля varchar(30) на varchar(255).
Вот тут: http://www.postgresql.org/docs/7.4/interactive/sql-altertable.html такой возможности, увы, не нашел. PostgreSQL 7.3.4.

Я недочитал мана или это можно сделать только через DROP - ADD ?

-~{}~ 15.07.04 14:45:

SQL error:
ERROR: parser: parse error at or near "TYPE" at character 39

In statement:
ALTER TABLE letters ALTER COLUMN name TYPE varchar(255);
 

Stels

Guest
1. Создаешь новое поле, задаешь ему TYPE varchar(255);
2. делаешь UPDATE таблице (копируешь данные со своего старого поля в новое).
3. Удаляешь старое поле.
4 Переименовываешь новое поле в название старого.
 

Krisha

pain in the neck
Stels
Так как на данные момет у меня таблица пустая, то можно проще: дроплю поле и добавляю новое или вообще дроплю всю таблицу и создаю новую :)

Меня интересует почему не работает ALTER COLUMN column TYPE

Предполагаю, что версия постгреса у меня старенькая...
 

Stels

Guest
имхо, поменять тип поля в любой версии postgres нельзя, когда я столкнулся с такой проблемой, то нашел только такой вариант решения...

Да и как postgres сможет поменять тип, к примеру с varchar(15) на int(4), если поле уже содержит 'blablabla'?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Krisha
Меня интересует почему не работает ALTER COLUMN column TYPE

Предполагаю, что версия постгреса у меня старенькая...
Типа того, ставь 7.5, в ней уже реализовано. ;)

А для перехода типа varchar -> int есть возможность указать функцию, через которую будут процеживаться значения...
 

Stels

Guest
А для перехода типа varchar -> int есть возможность указать функцию, через которую будут процеживаться значения
Функция, как я понимаю PHP'шная?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Stels
Функция, как я понимаю PHP'шная?
Ну разве что если ты специально на PL/PHP напишешь. Речь ведь о встроенной команде базы данных, сходи по ссылке...
 
Сверху