复制/保存SQL中旧索引的表
我的模式中有两个表。表1是旧的,表2是新的,现在我希望以某种方式将表2复制/重命名为表1。同时,我希望在重命名/复制后保留旧表-->Table1中的索引 我正在使用SQLDeveloper来实现这一点。我希望我已经清楚地解释了我的疑问复制/保存SQL中旧索引的表,sql,oracle,indexing,oracle-sqldeveloper,Sql,Oracle,Indexing,Oracle Sqldeveloper,我的模式中有两个表。表1是旧的,表2是新的,现在我希望以某种方式将表2复制/重命名为表1。同时,我希望在重命名/复制后保留旧表-->Table1中的索引 我正在使用SQLDeveloper来实现这一点。我希望我已经清楚地解释了我的疑问 如果我删除表1,我将丢失索引 在表2被删除之前,我无法将其重命名为表1 我看不到在sql developer上复制索引的选项 这一系列步骤怎么样 -- original table create table table2 (x number); create
这一系列步骤怎么样
-- original table
create table table2
(x number);
create index table2_idx on table2(x);
-- now create the copy table
create table table1
as
select * from table2;
-- create new index
create index table1_idx on table1(x);
-- now switch
drop table table2;
rename table1 to table2;
替换您自己的索引定义和名称
您可以在表概览选项卡的索引
DDL
中找到它SQL
截断表1
并重新插入数据:
truncate table table1;
insert into table1 ( . . . )
select . . .
from table2;
如果两个表具有相同顺序的相同列,则可以在不列出列的情况下执行插入:
insert into table1
select *
from table2;
只需在表2上创建两个索引,并在删除表1后根据需要重命名即可。索引是从表中的数据生成的;你不能把他们抬到另一张桌子上;您需要为新表重新生成它们。提取DDL以创建索引,并在重命名/复制的表上运行它们2…为什么不能重新创建索引?或者简单地将数据从t2复制到t1?您的主要目标是什么?是否要重新组织该表?