首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle:如何使用DBMS_REDEFINITION包重新排序列?

Oracle:如何使用DBMS_REDEFINITION包重新排序列?
EN

Stack Overflow用户
提问于 2013-07-06 09:21:43
回答 2查看 4.7K关注 0票数 3

我需要使用DBMS_REDEFINITION包对表中的一些列进行重新排序。对于像这样的表,我如何做到这一点

代码语言:javascript
复制
create table a (z number, x number);

以使重新排序的表具有x作为第一列?

(上下文:我正在编写一些实用程序,将一些元数据列添加到一些现有的表中,如果元数据列在前面,这对所有相关人员都很有用,以便在sql developer或其他表浏览工具中拉出时可以方便地查看它们。我知道,对于逻辑处理,列顺序并不重要,但这是为了使用现成的工具使表更容易理解。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-07 14:37:50

不确定您的问题是什么,因为手册中解释了用法。

但是,由于您的表似乎没有主键(或者您忘记提到这一点),您需要使用一个特殊的标志,以便能够使用dbms_redefinition重新定义它:

代码语言:javascript
复制
create table a_ (x number, z number);

begin
  dbms_redefinition.start_redef_table(
    uname => user, 
    orig_table => 'A', 
    int_table => 'A_', 
    options_flag => dbms_redefinition.cons_use_rowid);

  dbms_redefinition.finish_redef_table(
    uname => user, 
    orig_table => 'A', 
    int_table => 'A_');
end;
/

drop table a_;
票数 1
EN

Stack Overflow用户

发布于 2013-07-07 07:24:04

抱歉,我还不能评论你的问题,

那么rename + create as select怎么样呢?

代码语言:javascript
复制
alter table a rename to a_01;
create a as select x,z from a_01;

???

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17498709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档