自定义生成数据库的主键
int ,11位,
请问应该怎么算的?谢谢~~

解决方案 »

  1.   

    我的话
    oracle用sequence 
    mysql用自增
      

  2.   

    select max(列名) from 表名然后+1
      

  3.   

    除非与业务相关,否则单纯序号的话建议使用数据库自有的方式来实现。oracle是使用sequence,mysql和MS SQLServer是建立自增字段。
    自己定义自增字段出来起来比较麻烦,要考虑自增、自减、循环使用、空闲使用等等,最麻烦的就是并发请求
      

  4.   

    我一般都用long型的数据,64bit的宽度,足够显示日期加3位扩展数字。
    int型数据,推荐使用数据库的自增列吧。我的long型ID,采用的是高地位方式,高位存放年月日时分秒的信息,地位采用自增算法。
    也就是说,数据库中,会创建一个TABLE_ID{TABLE_NAME,CURR_HIGH}存放表ID的当前的高位部分。
    低位部分,采用自增一的算法来做。直到3位低位部分的数值取满,再去更新TABLE_ID表的数据。举例:20100531142534001就是一个生成的ID值,后三位数字是低位数字。当然,如果应用要求ID值对时间有意义的话,再取ID值的时候,要校验时间部分,以便适当的更新高位部分的数据。
      

  5.   

    用序列或者自增列,用序列的话可以使用select  lpad(PPM_SEQ.NEXTVAL,11,'0') FROM DUAL;PPM_SEQ为序列名称。11为总长度,0为位数不够是填充的字符。
      

  6.   

    如果是整形,那可以用sequence或是自增从100 0000 0000 开始都是11位的