采用临时表
先把A表字段的数据保存到临时表,再把B表字段的值赋给A表,然后把临时表数据赋给B

解决方案 »

  1.   

    把現在的表重新命名,然後再建立一個表,把數據insert過去
      

  2.   

    SQL> desc test1;
     名称                                      空?      类型
     ----------------------------------------- -------- ----------------------
     COL1                                               CHAR(2)
     COL2                                               CHAR(4)SQL> select * from test1;CO COL2
    -- ----
    1  a
    2  b
    3  cSQL> desc test2;
     名称                                      空?      类型
     ----------------------------------------- -------- ----------------------
     COL1                                               CHAR(2)
     COL2                                               CHAR(4)SQL> insert into test2 
      2  select col2,col1 from test1;
    select col2,col1 from test1
           *
    ERROR 位于第 2 行:
    ORA-01401: 插入的值对于列过大
    SQL> alter table test2 modify (col1 char(4));表已更改。SQL>  insert into test2 
      2   select col2,col1 from test1;已创建3行。SQL> select * from test2;COL1 COL2
    ---- ----
    a    1
    b    2
    c    3SQL> rename test1 to test1bak;表已重命名。SQL> rename test2 to test1;表已重命名。字段长度允许,就可以这样换了