表结构如下:
create table a
(
     aid varchar2(32) primary key,
     aname varchar2(50)
)create table b
(
     mid 自动增长列,
     bid varchar2(32),
     bname varchar2(50)
)现需将A表中的数据查询出来放到B表中,而B表中多了一列,是自动增长列,请问如何实现A表往B表中的插入操作?

解决方案 »

  1.   

    写一个存储过程吧,B表的MID在存储过程中自动生成就行啦存储过程我就不用多讲吧
      

  2.   

    create sequence seq_mid
    start with 1
    increment by 1;
    insert into b  (select seq_mid.nextval,a.* from a);
      

  3.   

    用seq,oracle有提供自增序列!
      

  4.   

    insert into b
    select rownum rn,aid,aname
    看哈這樣可以不?
      

  5.   

     oracle 可以用 Sequence
      mssql 可以直接插入 bid ,bname 
      

  6.   

    insert into b values(select id ,id,name from a)
    这样应该可以吧
      

  7.   

    CREATE SEQUENCE seq_mid START WITH 1
    /INSERT INTO b
    (mid, bid, bname)
    SELECT seq_mid.NEXTVAL, aid, aname
    FROM a
    /
      

  8.   

    4楼方式不妥,a表纪录行数可能是会减少的,所以rowno可能存在重复的情况。
    如果a表的aid为始终唯一的(即某条纪录被删除后,以后纪录的主键不可能与此删除记录的主键相同),那么可以采用
    insert into b values(a.aid,a.aid,a.aname);
    用序列性能要稍微损耗一些,毕竟需要多查一次序列表,且查的过程中要锁此表。
    主要看楼主业务需求了,所谓的b的自动增长列是不是必须要“增长”的,以及a.aid是怎么生成的了。