Я пытаюсь добавить столбец CLOB в таблицу (фактически измените VARCHAR на CLOB, но это только кажется возможным, добавив новый столбец, скопировав и отбросив старый).Столбец должен быть NOT NULL без значения по умолчанию (и таблица не пуста).Как мне этого добиться?
Моя первоначальная идея состояла в том, чтобы создать столбец с фиктивным значением по умолчанию и изменить его позже, но это не представляется возможным:
ALTER TABLE foo RENAME COLUMN text TO text_temp;
ALTER TABLE foo ADD (
text CLOB DEFAULT '*' NOT NULL
);
UPDATE foo SET text = text_temp;
ALTER TABLE foo DROP COLUMN text_temp;
ALTER TABLE foo MODIFY (
text CLOB NOT NULL
);
-- ORA-22296: invalid ALTER TABLE option for conversion of LONG datatype to LOB
Я также попытался определитьстолбец как text CLOB
и добавление ограничения NOT NULL позже, но оно выдает ту же ошибку.Есть ли способ сделать это, кроме воссоздания всей таблицы?