代码之家  ›  专栏  ›  技术社区  ›  Moeb

如何在SQL*Plus中复制表及其所有约束?

  •  2
  • Moeb  · 技术社区  · 15 年前

    使用 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> 
    

    如何复制表及其所有约束?

    1 回复  |  直到 15 年前
        1
  •  11
  •   René Nyffenegger    15 年前

    我会从这样的事情开始

    set long 100000
    select dbms_metadata.get_ddl('TABLE', 'TAB1', '<schemaname'>) from dual
    

    返回一个 create table 声明 TAB1 (在架构中< >)。你可以 您还可以更改所有约束的名称,因为它们在Oracle中必须是唯一的。

    insert into TAB2 select * from TAB1