Ответ 1
Мой окончательный запрос оказался примерно таким:
ALTER TABLE MY_TABLE DATA CAPTURE NONE;
ALTER TABLE MY_TABLE ALTER MY_COLUMN DROP NOT NULL;
ALTER TABLE MY_TABLE DATA CAPTURE CHANGES;
Я использую db2 version 9.7 *, и кажется невозможным сделать NULL-столбец NOT NULL любым простым способом.
К сожалению, решение использовать более доступную для разработчиков базу данных недоступно. В основном, в MySQL говорят, я хочу сделать что-то вроде этого (где MY_COLUMN раньше был VARCHAR (200) NOT NULL):
ALTER TABLE MY_TABLE MODIFY COLUMN MY_COLUMN VARCHAR(200);
Мой окончательный запрос оказался примерно таким:
ALTER TABLE MY_TABLE DATA CAPTURE NONE;
ALTER TABLE MY_TABLE ALTER MY_COLUMN DROP NOT NULL;
ALTER TABLE MY_TABLE DATA CAPTURE CHANGES;
документация говорит, что ALTER TABLE имеет возможность DROP NOT NULL
ALTER TABLE TABLE_NAME ALTER COLUMN COLUMN_NAME DROP NOT NULL;
работает в DB2 9.7 и выше. Как бы вы не захотели выполнить таблицу reorg (в 9.7 db2 ставит таблицу в состояние ожидания reorg, то же самое в 10.5 FP 5 тоже):
вызвать sysproc.admin_cmd ('reorg table TABLE_NAME');