比如说:今天是2008-7-24,明天是2008-7-25.
那么今天我在数据库表里增加了数据。。
表的主健就会以2008072401,2008072402,2008072403.......这样增长。
而过了晚上十二点后呢,也就是第二天。
表的主健就会以2008072501,2008072502,2008072503.....这样增长。

解决方案 »

  1.   

    给你思路:
    建个sequence
    建个触发器(before insert的里面写系统日期连接sequence然后赋给:new)
    再建立个job每天24点准时删除掉sequence再原样重建我能想到的就这么一个方法..别的想不出来..
      

  2.   

    可以建个循环sequence ,作为每天的基数循环(不用每天进行清空), 前面加上日期,如果每天的插入量小于等于这个sequence,这种方法就可以,前提是你得估算出每天的插入量,太小不够用,太大浪费!
      

  3.   

    4楼我不太明白
    比说说一天插入100条sequence最大值为101
    按你说的插入小于sequence
    那我24点前就插了100条
    第二天我开始插入的时候岂不是101
    然后1,2,3这样
    这样不满足楼主的意思..
      

  4.   

    假如你的表结构如下: create table tt(id number,xx varchar2(20).....);
    在主健上创建如下index:
    create index i_tt_pk_id_1 on tt(substr(id,1,8));在插入以前,通过下面的方法获取主健值:
    select nvl(max(id),to_char(sysdate,'yyyymmdd')||'01') maxid from tt where substr(id,1,8)=to_char(sysdate,'yyyymmdd');然后进行你的insert操作.....
      

  5.   

    select to_number(to_char(sysdate,'RRRRMMDD')|| BL$SEQ.NEXTVAL) from dual
    BL$SEQ是Sequences..这样在插入前也可以实现。
    如果不要在插入前写这些..当我插入数据的时候...它就会这样自动增加.那就更好不过了