使用create table tab2 as select * from tab1;
,我可以复制数据,但不能复制主键约束:
SQL> desc tab1;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER
NAME VARCHAR2(20)
SQL> select * from tab1;
ID NAME
---------- --------------------
1 A
SQL> create table tab2 as select * from tab1;
Table created.
SQL> desc tab2;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
NAME VARCHAR2(20)
SQL> select * from tab2;
ID NAME
---------- --------------------
1 A
SQL>
如何复制具有所有约束的表格?
答案 0 :(得分:8)
我从
开始set long 100000
select dbms_metadata.get_ddl('TABLE', 'TAB1', '<schemaname'>) from dual
这将返回create table
的{{1}}语句(在架构&lt; schemaname &gt;中)。您可以
然后复制该语句并将标识符TAB1更改为TAB2。你应该确保
您还可以更改所有约束的名称,因为它们在Oracle中必须是唯一的。
最后,您需要执行TAB1