Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Добавление ограничение NOT NULL к существующему типу поля / 4 сообщений из 4, страница 1 из 1
28.01.2016, 13:10
    #39157392
guly2808
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление ограничение NOT NULL к существующему типу поля
Всем привет!

Как изменить свойство поля с
start_km integer на start_km integer not null?

Данная штука увы (естественно) не прокатывает:

Код: sql
1.
alter table xx_apr_speed_tr alter start_km type integer not null;



Вот это выдал FlameRobin при установке галочки <хочу not null>:

(*)
Код: sql
1.
2.
3.
4.
5.
UPDATE XX_APR_SPEED_TR 
SET START_KM = ' ' 
WHERE START_KM IS NULL;
UPDATE RDB$RELATION_FIELDS SET RDB$NULL_FLAG = 1
WHERE RDB$FIELD_NAME = 'START_KM' AND RDB$RELATION_NAME = 'XX_APR_SPEED_TR';



Правильно ли я понимаю, что SET START_KM = ' ' заменяет уже существующие значения NULL на значения, которое мы укажем в ' '? А затем идет условие невозможности значения NULL в столбце START_KM?

Есть ли смысл - заморачиваться с (*), может просто удалить поле и заново его добавить?
...
Рейтинг: 0 / 0
28.01.2016, 14:07
    #39157488
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление ограничение NOT NULL к существующему типу поля
guly2808,

Правильно он тебе выдал - IBE точно так же делает. Но лучше имхо пересоздать с переливкой данных через временное поле - прямая правка системных таблиц чревата.
...
Рейтинг: 0 / 0
28.01.2016, 14:13
    #39157494
guly2808
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление ограничение NOT NULL к существующему типу поля
DarkMaster, спасибо!
...
Рейтинг: 0 / 0
28.01.2016, 14:17
    #39157500
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление ограничение NOT NULL к существующему типу поля
guly2808
Данная штука увы (естественно) не прокатывает:

Код: sql
1.
alter table xx_apr_speed_tr alter start_km type integer not null;




правильный способ появился только в Firebird 3.0

Код: plaintext
1.
ALTER TABLE tablename
ALTER [COLUMN] colname [SET | DROP] NOT NULL
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Добавление ограничение NOT NULL к существующему типу поля / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]