begin
SELECT '120000'||LPAD(MYSEQ1.NEXTVAL, 9,'0') INTO :NEW.A FROM DUAL;end;
还有别的写法么?比如:
:new.a:='120000'||LPAD(MYSEQ1.NEXTVAL, 9,'0')这样写不行,
怎么得到这个新生成的值呢?

解决方案 »

  1.   

    什么意思啊,怎么看不懂?
    现在的 :NEW.A 里存的不就是那个值吗?在这个触发器之外,可以使用 insert into ... return a 来返回该值。
      

  2.   

    oracle 的例子:INSERT INTO emp VALUES (empseq.nextval, ’LEWIS’, ’CLARK’,7902, SYSDATE, 1200, NULL, 20) RETURNING sal*12, job INTO :bnd1, :bnd2;
      

  3.   

    用触发器有个问题:
       如果insert错误时,触发器执行,字段加1,这样则会出现字段跳空的错误。
       最好是用存储过程在程序中执行