暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 我可以用Alter Table语句将现有列更改为计算列吗

ASKTOM 2021-03-04
501

问题描述

测试用例可以在以下位置找到:https://livesql.oracle.com/apex/livesql/s/lgh3hduetd3lqd74jvuolc78k

给定:
Drop table t1;
Create table t1
    (c1 Int Default 0 Not Null,
     c2 Int Default 0 Not Null);


然后有可能:
更改表t1
将c2修改为 (c1 1);


当我这样做时,我得到以下结果,所以我开始相信这是不可能的:
表掉了

创建的表

更改表t1
将c2修改为 (c1 1)

ORA-54026: 实列不能有表达式

感谢您的帮助,因为我无法找到任何可以确认此行为的文档。

谢谢,
奥布里

专家解答

是的,但是要走几步

SQL> Create table t1
  2      (c1 Int Default 0 Not Null,
  3       c2 Int Default 0 Not Null);

Table created.

SQL>
SQL> Alter table t1 set unused column c2;

Table altered.

SQL> alter table t1 add c2 int generated always as ( c1+1);

Table altered.


这是有关使用未使用设置和不使用drop列的视频



文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论