可以用sequence
也可以根据情况用存储过程生成唯一的ID号
如加上日期的ID:ID2005062700001

解决方案 »

  1.   

    “固定字符串"+string(“12456”)
      

  2.   

    其实(sqlserver的)自增型数据类型和(oracle的)sequence还是各有好处的。
    刚使用sequence时我觉得不甚好用,现在用多了,感觉这种设计还是不错的,比较灵活。唯一ID可以使用 sequence.nextval 来获取,(还可以进行格式控制)
      

  3.   

    如果不需要有具体意义,用GUID最好,可以用 sys_guid() 函数获取到。select sys_guid() from dual;
      

  4.   

    可是当SEQUENCEN取道最后一个值后,如果用循环从头开始取的话如何保证唯一呢?
    比如一个序列1,2,3,4,5。
    现在我取了5,下个就是1了,可是现在数据库中有1的记录,但是2的记录被删除了,我想下一个不取1而是取2应该怎么办呢?希望不要在程序中控制
      

  5.   

    SEQUENCEN订的大一些就可以了我一般都订15位,下辈子也到不了头
      

  6.   

    用触发器
    如:create or replace trigger before_insert_zfkh_yj
      before insert on zfkh_yj
      for each row
    declare
      -- local variables here
       id CHAR(11);
    begin
      SELECT nvl(MAX(yjbh),'0000000000') INTO id FROM zfkh_yj where yjbh like :new.zdyj_dm||'%';
      :new.yjbh:=substr(:new.zdyj_dm,1,5)||lpad(to_number(substr(id,6))+1,6,'0');
    end before_insert_zfkh_yj;