如何在Oracle的结构和约束中创建与其他表相同的表?

时间:2013-05-27 11:49:08

标签: oracle

我想创建一个表(比如table_copy),它与Oracle数据库中的其他表具有相同的列(让我们称之为table_original),因此查询将如下所示:create table table_copy as(select * from table_original where 1 = 0),这将创建一个表,但table_original的约束不会复制到table_copy,那么在这种情况下应该做什么?

2 个答案:

答案 0 :(得分:3)

使用“创建表格为语法”(CTAS)仅复制NOT NULL个约束。其他人应该手动创建。

但是,您可以查询数据字典视图以查看约束的定义,并使用PL / SQL在新表上实现它们。

可能有用的另一个工具是Oracle Data Pump。您可以使用REMAP_TABLE选项导入表,指定新表的名称。

答案 1 :(得分:2)

使用数据库工具提取约束所需的DDL(SQL Developer完成工作)。编辑生成的脚本以匹配新类的名称。

执行脚本。

如果需要以编程方式执行此操作,可以使用如下语句:

DBMS_METADATA.GET_DDL('TABLE','PERSON') from DUAL;