在线重定义表(转)

来源:互联网 发布:桃子圈微博全数据图片 编辑:程序博客网 时间:2024/05/21 14:00

-- 创建原表A
create table A
(
  ABC NUMBER not null
);
-- 表A必须包括一个主键
alter table A add constraint P primary key (ABC);

--分析表A是否可以在线重建,如果报错则不可以
EXEC sys.dbms_redefinition.can_redef_table('DLYX','A');
-- 创建一个中间表A1,用于存储原来数据,约束不可重名
create table A1
(
  ABC NUMBER not null
);
alter table A1 add constraint P1 primary key (ABC);

--开始重建
EXEC sys.dbms_redefinition.start_redef_table('DLYX','A','A1');
--结束重建
EXEC sys.dbms_redefinition.finish_redef_table('DLYX','A','A1');
--终止重建(如果不想重建)
EXEC sys.dbms_redefinition.abort_redef_table('DLYX','A','A1');
--删除中间表A1
DROP TABLE A1;

-- 重命名表约束
alter table A drop constraint P1 cascade;
alter table A add constraint P primary key (ABC);

 
原创粉丝点击