ЧАстые Вопросы и Ответы
Модераторы: kdv, CyberMax
-
Drago82
- Сообщения: 8
- Зарегистрирован: 11 окт 2005, 10:28
Сообщение
Drago82 » 11 окт 2005, 10:37
Имеется таблица Objects с данными. В ней есть поле NCN типа smallInt. Потребовалось сменить тип этого поля на integer.
Безопасно ли использование следующего кода, может ли это создать какие-то проблемы? Может ли это испортить данные в таблице?
update RDB$FIELDS set
RDB$FIELD_TYPE = 8,
RDB$FIELD_LENGTH=4
where RDB$FIELD_NAME = (select first 1 RDB$FIELD_SOURCE
from RDB$RELATION_FIELDS
where (RDB$RELATION_NAME='OBJECTS')
and (RDB$FIELD_NAME='NCN'));
-
Dimitry Sibiryakov
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Сообщение
Dimitry Sibiryakov » 11 окт 2005, 14:05
_Любое_ ковыряние системных таблиц небезопасно. А что, сервер настолько стар что не понимает ALTER TABLE ALTER field?
-
Drago82
- Сообщения: 8
- Зарегистрирован: 11 окт 2005, 10:28
Сообщение
Drago82 » 12 окт 2005, 04:16
имеется множество хранимых процедур, которые используют это поле. Alter table alter field не проходит.
-
Dimitry Sibiryakov
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Сообщение
Dimitry Sibiryakov » 12 окт 2005, 08:23
Drago82 писал(а):имеется множество хранимых процедур, которые используют это поле. Alter table alter field не проходит.
Тогда ковыряние таблиц просто уронит базу. До невосстанавливаемого состояния.
Надо дропать все использующие хранимые процедуры, изменять поле и возвращать процедуры обратно.
-
Drago82
- Сообщения: 8
- Зарегистрирован: 11 окт 2005, 10:28
Сообщение
Drago82 » 12 окт 2005, 08:48
дык я ж буду очень осторожно и "правильно" ковырять. И в хранимых процедурах работать с NCN как с integer. Провёл эксперимент на нескольких базах - всё вроде ок... И база живая, и информация не потеряна, и тип благополучно сменился.