你这样就不需要用sequence了,另外建立一个存放每日当前最大流水号的表,在trigger里查询和更新。

解决方案 »

  1.   

    如果你的数据库服务器是24X7的,可以考虑使用一个job在0:0:0做一些工作。
    如果不是,那么 赞同Lastdrop(空杯) 的做法,在trigger里比较一下时间,就什么都解决了。
      

  2.   

    我的问题是如何让sequence 的值变为100000
      

  3.   

    建义不要用序列号了。
    CREATE OR REPLACE PACKAGE pkg_test
    AS
       num number:=0;
    END pkg_test;
    /
    SQL> create or replace procedure pro
      2  is
      3  begin
      4  pkg_test.num:=0;
      5  end;
      6  /QL> declare
      2  jobno number;
      3  begin
      4  dbms_job.submit(jobno,'pro;',sysdate,'trunc(sysdate)+1');
      5  commit;
      6  end;
      7  /create trigger name_tri
    before insert on tbl_error_log
    for each row
    begin
    pkg_test.num:=pkg_test.num+1;
    select to_char(sysdate,'yyyymmdd')||lpad(pkg_test.num,6,'0') into log_id from dual;
    end;
    /
      

  4.   

    sorry,笔误
    select to_char(sysdate,'yyyymmdd')||lpad(pkg_test.num,6,'0') into :new.log_id from dual;
      

  5.   

    每天插入第一条记录的时候,重建一下sequence