ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 如何将一个表的某些字段改变先后秩序

如何将一个表的某些字段改变先后秩序

原创 Linux操作系统 作者:lcmlsj 时间:2019-05-21 14:27:07 0 删除 编辑
一种方法利用表的在线重定义;另一种方法利用ctas.

表的在线重定义:
SQL> alter table t add primary key(id);

Table altered.


1。验证并指定使用主键。
BEGIN
DBMS_REDEFINITION.CAN_REDEF_TABLE('lcm','t',
DBMS_REDEFINITION.CONS_USE_PK);
END;
2。创建中间表
CREATE TABLE int_t
(name varchar2(30),
id number primary key);
3。启动在线重定义过程。
BEGIN
DBMS_REDEFINITION.START_REDEF_TABLE('lcm', 't','int_t',
'name name, id id',
dbms_redefinition.cons_use_pk);
END;
4。同步数据
BEGIN
DBMS_REDEFINITION.SYNC_INTERIM_TABLE('lcm', 't', 'int_t');
END;
5。结束在线重定义过程。

BEGIN
DBMS_REDEFINITION.FINISH_REDEF_TABLE('lcm', 't', 'int_t');
END;
/
可以查询有无出错。
SQL> select object_name, base_table_name, ddl_txt from
2 DBA_REDEFINITION_ERRORS;

no rows selected
察看结果:
SQL> desc t
Name
---------------------------------------------------------------------------------------
NAME
ID

SQL> select * from t;

NAME ID
------------------------------ ----------
a 12
a 112


利用ctas:
SQL> set linesize 1000
SQL> desc t
Name
---------------------------------------------------------------------------------------
ID
NAME


SQL> create table t1
2 as
3 select name,id from t;

Table created.

SQL> desc t1
Name
---------------------------------------------------------------------------------------
NAME
ID

SQL> select * from t;

ID NAME
---------- ------------------------------
12 a
112 a

SQL> select * from t1;

NAME ID
------------------------------ ----------
a 12
a 112

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9599/viewspace-472933/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: where a0与索引
请登录后发表评论 登录
全部评论

注册时间:2002-04-09

  • 博文量
    100
  • 访问量
    114098