ORA-54033: column to be modified is used in a virtual column expression(удалить виртуальный столбец)

При изменении типа столбца может выскочить ошибка ошибка ORA-54033: column to be modified is used in a virtual column expression

Оказывается Oracle в вашей таблице создал виртуальный столбец на базе вашего, который вы хотите изменить. 

Посмотреть наличие виртуальных столбцов в таблице можно запросом:

SELECT TABLE_NAME, COLUMN_NAME, DATA_DEFAULT, HIDDEN_COLUMN
  FROM USER_TAB_COLS
 WHERE TABLE_NAME = UPPER('<ИМЯ ТАБЛИЦЫ>');

Удалить системный столбец SYS_* обычной командой DROP COLUMN не получится. Выйдет ошибка: ORA-12996 cannot drop system-generated virtual column 

Поэтому удаляем скриптом ниже: 

BEGIN 
  dbms_stats.drop_extended_stats('<ИМЯ_СХЕМЫ>', '<ИМЯ_ТАБЛИЦЫ>', '<Содержимое строки из DATA_DEFAULT, после "SYS_OP_COMBINED_HASH">');
END;

Далее можем модифицировать нужный нам столбец.

11:21
55
Нет комментариев. Ваш будет первым!
Загрузка...