现在想创建一个表,ID自增为TUR200812250001(TUR+日期+自增号)这样的形式,用什么方法比较好?
很着急,谢谢!

解决方案 »

  1.   

    TUR||to_char(sysdate,'yyyymmdd')||sequence名字.next以前看过的,每天把seq重置就好了
      

  2.   

    用触发器结合ORACEL自增序列就可以做了,在触发器里对插入动作的时候,触发类似如下语句就行
    INSERT INTO MYTABLE(ID,……) VALUES('TUR'||SYSDATE||MYSEQUENCE.NEXTVAL,……)
      

  3.   

    更正一点
    INSERT INTO MYTABLE(ID,……) VALUES('TUR'¦¦to_char(sysdate,'yyyymmdd')¦¦MYSEQUENCE.NEXTVAL,……)
      

  4.   

    用序列+触发器实现!
    触发器中
    :new.Id='TUR'||to_char(sysdate,'yyyymmdd')||lpad(seq.nextval,5,'0');
    具体序列+触发器实现自增的方法,google一下!
      

  5.   

    建立序列:
    CREATE SEQUENCE seq_id
    Increment By 1
    Start With 1
    MaxValue 99999
    NoCache
    Cycle
    Order;INSERT INTO your_table (...) VALUES('TUR'||to_char(sysdate,'yyyymmdd')||to_char(seq_id.nextval,'fm00000'),....);
      

  6.   

    之所以要重置,是可能由于seq的长度不够,会导致重复记录,如seq的最大值为999,当你一天中插入第1000条记录时,则seq又变成001了,则与第一条记录的id相同;如果你能保证每天插入的记录不会超过seq的最大长度,则无需重置。
      

  7.   

    可以增加个job,每天0点整的时候重置序列,具体如何重置序列,自己可以存储过程让job每天来调,存储过程写法可参照:
    http://blog.csdn.net/bzszp/archive/2005/03/15/320288.aspx
      

  8.   

    恩这是个好办法,再加上JOB 就OK了..
      

  9.   

    也可以封装成一个方法。每次新增就Get一下。