如何为许多用户维护一个唯一的数字?
如何为许多用户维护一个唯一的数字?
问题背景:二三百个终端要从SQL SERVER 得到一个整数,这个整数是从1开始,每次加1的
我希望每个终端都能得到一个和其它终端不同的号
比如A第一个要号,应得到1,B第二个要号应得到2,A再要号是3,D再要号是4等,依比类推
这有两个问题:
1,如何让SQL SERVER记往号排到几了
2,万一两个终端同时要号,是不是有必要加锁之类的,怎么实现?
------解决方案--------------------1.如果可以的话,使用自增列.
2.或者在保存时,使用 max(col)来获取到最大的值.
------解决方案--------------------http://technet.microsoft.com/zh-cn/library/ms190911.aspx
不知道这个是不是你想要的。 我理解的是,LZ想记录发送请求的次数。
通过计数器可以监控这个数值。
------解决方案--------------------其实我没有听明白楼主意思
------解决方案--------------------新建立一张表和一个存储过程GETnewID的。表专程存ID号,每getnewid叫一次加1
------解决方案--------------------应该是TimeTamp吧。
机器号+TIMETAMP 如果不要求自动加1的话,
再偷懒就用GUID。保证任何机器都不会重复,就是长了点
------解决方案--------------------select max(id) from tb (updlock)
update tb set id =.....
这样会保证你读的id是最新的,不会导致被其他事物修改
对这个表的锁会持续到你的事物结束再释放
------解决方案--------------------这种情况 我建议 创建一张表
三字段
主健、表名、当前最大ID
每次请求不管是那个机器都
update tb set 当前最大ID =当前最大ID +1
select 当前最大ID frin tb where 表名='aaaa'
这样就不会有问题了
------解决方案--------------------