自动流水号(7)

  • 主题发起人 主题发起人 qumingfei
  • 开始时间 开始时间
Q

qumingfei

Unregistered / Unconfirmed
GUEST, unregistred user!
我们使用的流水号是这样的格式: 9030005 其中 ‘9’是代表2009年; 03代表三月份;0005是序号。 马上就是2010年了,流水号会变成 0010001 ,这样就比2009年的编号还要小了。怎么解决这个问题。
 
数据库中可有限制字段位数,如果没有,就改为10010001开始~~
 
原先就没考虑好,修改为A030005表示10年,26个字母够你用26年了。不过还是把原先的更改为09030005比较好。
 
呵呵,26年倒也够用了
 
问个流水号问题,你的客户端是几个?如果有10个人读最后一条记录9030005 那么就回产生多个9030006,你是怎么控制的?可以讲讲方法吗?我想请大家讲将经验
 
产生的时候是 9030005 ,保存的时候再查一下最大编号是多少了之后,再加1。
 
是啊肯定是先select 最大号啊,在加1保存,但是数据库大了后,写入保存那得费点时间那么在select 最大号时会多人取到同一个号。
 
是什么数据库呀,如果是oracle可以用最大的rowid解决。如果是其他库可以考虑检索前检查是否有小于9的,如果有小于9的那么把等于9的从检索最大编号中去除掉!
 
能否把流水号加3位,如:9030005改成2009030005,这样到了2010年就是2010XX0001了。
 
做法一:位数不变,可以考虑把年月后面四位用16进制来编号,或更高进制;可以表示更多的信息;做法二:增加位数
 

Similar threads

回复
0
查看
813
不得闲
回复
0
查看
848
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部