SELECT INTO在同一个表中

时间:2010-01-19 05:56:41

标签: sql oracle select

我有一个要求我要重命名列的要求。在这种情况下,它应该像:

1。)我需要使用现有的列结构创建一个新列。 2.)将数据迁移到新列。 3.)保留旧栏目。

我没有新的列结构,我必须从旧列中取出它。

TIA。

2 个答案:

答案 0 :(得分:4)

您无需选择同一个表格。执行以下步骤:

  1. 将新列创建为可为空。
  2. 使用update语句根据旧列中的值将数据填充到新列中。
  3. 添加不可为空的约束(如果适用)。
  4. 更新所有查询和代码,以使用新列中的值而不是旧列。
  5. 删除旧列。

答案 1 :(得分:1)

什么版本的Oracle?您可以从9i R2重命名该列:

ALTER TABLE your_table
RENAME COLUMN old_name to new_name;

如果您已设置重新创建表格以便使用SELECT INTO,那么您需要使用以下步骤:

  1. 删除与表格相关的约束
  2. 删除与表相关的索引
  3. 锁定原始表:

    LOCK TABLE old_table IN EXCLUSIVE MODE;
    
  4. 重命名表格:

    RENAME old_table TO old_table_orig
    
  5. 使用正确/更新的列

  6. 创建新表
  7. 运行您的SELECT INTO脚本以填充新表,处理数据类型更改(如果有)
  8. 添加索引
  9. 添加约束
  10. 删除old_table_orig