1

我想在 Oracle 数据库中创建一个与其他表(我们称之为 table_original)具有相同列的表(比如说 table_copy),所以查询将是这样的:create table table_copy as (select * from table_original where 1=0) ,这样会创建一个表,但是table_original的约束并没有复制到table_copy,那么这种情况应该怎么办呢?

4

2 回答 2

3

NOT NULL使用 Create Table As Syntax (CTAS) 复制约束。其他应手动创建。

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

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

于 2013-05-27T11:50:51.883 回答
2

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

执行脚本。

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

DBMS_METADATA.GET_DDL('TABLE','PERSON') from DUAL;
于 2013-05-27T11:55:35.143 回答