我试图改变一个表,其中该列的原始数据类型是数字到generated
列,但我得到一个错误的"ORA-00905缺少关键字"
Alter Table MyTable
Modify Column FlagColumn NUMERIC (38,0) GENERATED ALWAYS AS (CASE WHEN ValueColumn IS NULL THEN 1 ELSE 0 END) VIRTUAL;
我的语法正确吗?
除了删除和重新创建表之外,我还有其他选择吗?
Oracle文档很明显不支持您正在尝试的语法。显而易见的解决方案是删除列,然后替换它:
ALTER TABLE mytable
DROP COLUMN flagcolumn;
ALTER TABLE mytable
ADD numeric GENERATED ALWAYS AS (CASE WHEN valuecolumn IS NULL THEN 1 ELSE 0 END) VIRTUAL;
没有理由不这样做,因为在任何情况下,您都会删除列的原始数据。