Change from Number to Generated in PLSQL



我试图改变一个表,其中该列的原始数据类型是数字到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;

没有理由不这样做,因为在任何情况下,您都会删除列的原始数据。

最新更新