请教一个主键生成 自定义生成数据库的主键int ,11位,请问应该怎么算的?谢谢~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的话oracle用sequence mysql用自增 select max(列名) from 表名然后+1 除非与业务相关,否则单纯序号的话建议使用数据库自有的方式来实现。oracle是使用sequence,mysql和MS SQLServer是建立自增字段。自己定义自增字段出来起来比较麻烦,要考虑自增、自减、循环使用、空闲使用等等,最麻烦的就是并发请求 我一般都用long型的数据,64bit的宽度,足够显示日期加3位扩展数字。int型数据,推荐使用数据库的自增列吧。我的long型ID,采用的是高地位方式,高位存放年月日时分秒的信息,地位采用自增算法。也就是说,数据库中,会创建一个TABLE_ID{TABLE_NAME,CURR_HIGH}存放表ID的当前的高位部分。低位部分,采用自增一的算法来做。直到3位低位部分的数值取满,再去更新TABLE_ID表的数据。举例:20100531142534001就是一个生成的ID值,后三位数字是低位数字。当然,如果应用要求ID值对时间有意义的话,再取ID值的时候,要校验时间部分,以便适当的更新高位部分的数据。 用序列或者自增列,用序列的话可以使用select lpad(PPM_SEQ.NEXTVAL,11,'0') FROM DUAL;PPM_SEQ为序列名称。11为总长度,0为位数不够是填充的字符。 如果是整形,那可以用sequence或是自增从100 0000 0000 开始都是11位的 各位大神,帮忙给个逻辑运算符用法的例子吧。 JVM最大线程数修改 java图片处理 如何用java获得网页里隐藏的音乐文件的真实地址? 寻取值的好算法 inter-procedural variation是什么意思啊? 怎样运行netbeans生成的jar? 请教一个关于接口的问题谢谢 怎么样用JAVA实现多现成编程打印20以内的奇数和偶数啊 简单问题!名为textfield的组件怎样获得焦点?? 求助:关于RSS解析器的问题! Socket编程小问题
oracle用sequence
mysql用自增
自己定义自增字段出来起来比较麻烦,要考虑自增、自减、循环使用、空闲使用等等,最麻烦的就是并发请求
int型数据,推荐使用数据库的自增列吧。我的long型ID,采用的是高地位方式,高位存放年月日时分秒的信息,地位采用自增算法。
也就是说,数据库中,会创建一个TABLE_ID{TABLE_NAME,CURR_HIGH}存放表ID的当前的高位部分。
低位部分,采用自增一的算法来做。直到3位低位部分的数值取满,再去更新TABLE_ID表的数据。举例:20100531142534001就是一个生成的ID值,后三位数字是低位数字。当然,如果应用要求ID值对时间有意义的话,再取ID值的时候,要校验时间部分,以便适当的更新高位部分的数据。