我有两个表A,B 和一个sequence:S
现在要从A表批量读取数据插入到B表,插入同时要向B表中插入sequence(每条记录的sequence都是唯一的)
该怎么实现呢?
我先试着这样做了下
select C.ss||,||B.row1 from 
(select S.nextval as ss from dual) C,B
结果报ORA-02287错误:此处不允许序号!

解决方案 »

  1.   

    在 B表将要插入序列的字段添加个触发器自动插入序列就OK啦,然后:往B表中插入数据的时候不用管 sequence 字段!
      

  2.   

    -- 创建触发器的代码类似如下:CREATE OR REPLACE TRIGGER mCategory_trig_autoinc
    BEFORE INSERT ON mvnforumCategory
    FOR EACH ROW
    BEGIN
      IF (:new.CategoryID IS NULL) THEN 
        SELECT mvnforumCategory_seq.nextval INTO :new.CategoryID FROM DUAL;
      END IF;
    END;
    /
      

  3.   

    -- 其实,也可以在插入的时候直接取序列的 nextval
    -- 示例如下:
    scott@TBWORA> create sequence emp_seq;序列已创建。scott@TBWORA> select emp_seq.nextval as eid, emp.empno, emp.ename from emp;       EID      EMPNO ENAME
    ---------- ---------- --------------------
             1       7369 SMITH
             2       7499 ALLEN
             3       7521 WARD
             4       7566 JONES
             5       7654 MARTIN
             6       7698 BLAKE
             7       7782 CLARK
             8       7788 SCOTT
             9       7839 KING
            10       7844 TURNER
            11       7876 ADAMS
            12       7900 JAMES
            13       7902 FORD
            14       7934 MILLER已选择14行。scott@TBWORA> select emp_seq.nextval as eid, emp.empno, emp.ename from emp;       EID      EMPNO ENAME
    ---------- ---------- --------------------
            15       7369 SMITH
            16       7499 ALLEN
            17       7521 WARD
            18       7566 JONES
            19       7654 MARTIN
            20       7698 BLAKE
            21       7782 CLARK
            22       7788 SCOTT
            23       7839 KING
            24       7844 TURNER
            25       7876 ADAMS
            26       7900 JAMES
            27       7902 FORD
            28       7934 MILLER已选择14行。
      

  4.   

    好像直接在insert里面使用就可以了吧。 
      

  5.   


    select S.nextval,a.字段 from A不行啊?
      

  6.   

    insert into b(...) select s.nextval,a.... from a where ...
    有这么复杂?还是我理解错了?