sql - Oracle 设置一个未使用的列,然后创建一个同名的新列

标签 sql oracle ddl

所以我有一个脚本,它正在创建一个名为 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/

相关文章:

sql - 如何检索以前的sql命令

oracle: select * from tab for other types?

php - 客户端上的php或javascript可以链接到远程服务器数据库吗?

Java:Oracle XMLType + JDBC

sql-server - SQL Server 与 Oracle DBMS_METADATA.GET_DDL 并行吗?

sql - 如果创建日期超过一周,则删除 SQL 表 - MS SQL Server

c# - 从 C# 代码调用时查询抛出异常

c# - Redshift中的语法错误日志表

mysql - 括号中的数字究竟是什么意思?

.net - 最好的独立于数据库的 SQL DDL 实用程序?