如何在Oracle中将临时表转换为永久表,反之亦然

7
我想知道在Oracle中将临时表转换为永久表的命令是什么。
另一个问题是关于索引。如果我将一个临时表转换成永久表,那么在临时表中使用的索引是否会和在永久表中使用的相同?
1个回答

9

无法将临时表转换为永久表。

您可以创建一个与临时表结构匹配的新永久表。

CREATE TABLE new_permanent_table
AS
SELECT *
  FROM old_temporary_table
 WHERE 1=0;

或者您可以使用DBMS_METADATA获取临时表的DDL,并手动编辑DDL以创建新的永久表。
然后,您可以在新的永久表上创建任何所需的索引,并删除旧的临时表。一旦旧的临时表被删除,您可以将永久表重命名为旧的临时表的名称(如果需要)。

谢谢您的回复。如果我使用这个替代方案,索引会继续使用新表名吗? - willian
@willian - 不需要。在任何情况下,您都需要在新创建的表上创建所需的索引。如果您使用DBMS_METADATA包生成现有临时表的相关对象的DDL,则应该会生成索引的DDL,然后您可以修改为新的永久表。 - Justin Cave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接