Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2009, 03:06   #1
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию Как изменить в InterBase размер поля varchar(10) на varchar(20)

Когда создавалась таблица (interbase) полю было присвоено свойство varchar и длина 10 (pole1 varchar(10)), затем понадобилось занести в это поле значение, длина которого больше 10 символов, как это сделать помогите пожалуйста. Думаю alter table MyTable... а дальше не знаю...
tarakan1983 вне форума Ответить с цитированием
Старый 22.03.2009, 10:18   #2
rnts
Новичок
Джуниор
 
Регистрация: 25.02.2009
Сообщений: 1
По умолчанию

alter table <имя таблицы > modify pole1 varchar (20)
rnts вне форума Ответить с цитированием
Старый 22.03.2009, 14:25   #3
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

в интербейзе нет такого оператора modify (в оракле да, без проблем)

если есть желание разобраться как изменить описалово поля, то рекомендую качнуть IBExpert (для русских полнейшая и законная халява), создать в нем алиас на интересующую БД и попробовать там в описании таблицы поменять размер строкового поля - в итоге сгенерится ДДЛ

ваще-то в ИБ все описания полей хранятся в доменах, соотвественно, для изменения поля требуется изменить домен

первый вариант:
через "третий карман" - создаешь новое временное поле (my_field_tmp varchar(20)) с новым описанием поля, копируешь туда данные из старого поля (my_field). После проверки целостности копирования убиваешь старое поле (my_field), создаешь новое поле со старым названием (my_field varchar(20)) с новым описанием и копируешь туда данные из временного поля (my_field_tmp). После проверки целостности копирования убиваешь временное поле (my_field_tmp).

второй вариант:
еще добавлю, что нижеописанный апдейт затрагивает системную инфу и им нужно пользоваться осторожно - чо-нить напутаешь и прощай база.

Код:
update RDB$FIELDS set
RDB$FIELD_LENGTH = 20,
RDB$CHARACTER_LENGTH = 20
where RDB$FIELD_NAME in (
select RDB$FIELD_SOURCE
from RDB$RELATION_FIELDS
where 0=0
  and RDB$RELATION_NAME = 'OUR_TABLE_NAME'
  and RDB$FIELD_NAME = 'OUR_FIELD_NAME')
и эттааа... не забудь проверить, что вложенный запрос возвращает то что нужно. и закоммить.

Последний раз редактировалось soleil@mmc; 22.03.2009 в 14:39.
soleil@mmc вне форума Ответить с цитированием
Старый 22.03.2009, 15:24   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

То tarakan1983
Вы можете модифицировать размер поля одной строкой:
ALTER TABLE MYTABLE ALTER POLE1 TYPE VARCHAR(20);

Последний раз редактировалось mihali4; 22.03.2009 в 16:01.
mihali4 вне форума Ответить с цитированием
Старый 23.03.2009, 15:35   #5
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
То tarakan1983
Вы можете модифицировать размер поля одной строкой:
ALTER TABLE MYTABLE ALTER POLE1 TYPE VARCHAR(20);
Извеняюсь за долгое молчание инета не было. Вот такую ошибку пишет
Unsuccessful metadata update
key size exceeds implementation restriction for index "MYTABLE_INDEX1"
буду пробовать способ 1 soleil@mmc

Последний раз редактировалось tarakan1983; 23.03.2009 в 20:28.
tarakan1983 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли сделать SUM данных таблицы с типом varchar? xxxsas SQL, базы данных 4 24.01.2009 22:42
varchar to blob in phpmyadmin Alar SQL, базы данных 0 11.01.2009 07:14
Как изменить размер Видео PilGrim Компоненты Delphi 1 19.11.2007 23:03
Как изменить размер рабочего стола? Legat Win Api 5 26.10.2007 17:17
Как изменить размер поля БД Алёна БД в Delphi 5 07.05.2007 10:06