一台服务器为每个申请加上一个当前最大唯一编号

一台服务器,几个客户机接受申请
要为每个申请加上一个当前最大唯一编号
为了避免重复有哪些办法?
高手介绍经验!
---------------------------------------------------------------

自動增長的ID,就可以
---------------------------------------------------------------

设置改记录悲观锁定即可!
---------------------------------------------------------------

可以的话让每一台客户机使用的编号前加一个标志位,如第一台的编号为1********
第二台的为2********
---------------------------------------------------------------

一般是保存是进行是否重复的验证,如果重复,则重新分配最大的编号;而且编号的生成,验证都最好做到存储过程里。
如果要使用锁,可以考虑使用只读锁和共享锁。
---------------------------------------------------------------

简单的办法可以用全局变量记住上次的号码(或写注册表),以次递增分配
---------------------------------------------------------------

可以用专门的一张表保存这些信息。
字段有:表名、最大ID
---------------------------------------------------------------

按日期生成流水号就可以了

日期做为前缀,后面加上流水号
这样就不会重复了,每天都是从1开始编号

---------------------------------------------------------------

不需要重复啊,保存时加上USER ID和时间,应该容易判别
---------------------------------------------------------------

直接设定字段的IDENTITY 属性是最简单的!
---------------------------------------------------------------

这样做是最好的,建一个存放最大序号的表table
declare @xh int
update table set xh = xh + 1
select @xh = xh from table
commit

先执行update可以锁住表,别人读不了,直到执行commit释放。
如果先执行select就会出现你说的那种麻烦。

---------------------------------------------------------------

世界上没有绝对的同时,放心去做,当你一取到最大编号就锁住表
执行完再解锁
---------------------------------------------------------------

对,利用sql的排他锁,自己处理起来很麻烦
---------------------------------------------------------------

用sysdate生成serialnumber应该可以。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus