所以我有一个脚本,它正在创建一个名为 ID 的列。
alter table table_name add (ID NUMBER(2))
现在作为回滚脚本的一部分,此列被设置为未使用,因为它几乎不可能删除此列
alter table table_name set unused column ID;
现在,由于我们有之前创建此列的相同增量脚本,如果我们再次运行增量以“添加”此列是否可以?应该采用什么方法来解决这个问题?
我记得设置一个列未使用会从字典中删除它并向该列添加 1 个字节的空值,但是添加具有相同名称的相同列,这样可以吗?
最佳答案
检查这个很容易:
SQL> create table t23 (
2 id number
3 , col1 varchar2(10)
4 );
Table created.
SQL> alter table t23
2 set unused column id;
Table altered.
SQL> desc t23
Name Null? Type
----------------------------------------- -------- ----------------------------
COL1 VARCHAR2(10)
SQL> alter table t23
2 add (id number)
3 /
Table altered.
SQL> desc t23
Name Null? Type
----------------------------------------- -------- ----------------------------
COL1 VARCHAR2(10)
ID NUMBER
SQL>
当然,我的示例与您的场景不太一样,但基本上您可以根据需要多次重复 SET UNUSED 和 ADD 循环。但是,我建议您在某个时候进行清理:
SQL> alter table t23 drop unused columns
2 /
Table altered.
SQL>
你可以慢慢来。
关于sql - Oracle 设置一个未使用的列,然后创建一个同名的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7838899/