一个2层管理系统,多人操作保存单据经常长生串号,重号情况。
系统是以前一个同事开发的。现在走人了,收拾烂摊子。
在生成ID的时候默认取最大值+1再保存,但是在实际多人同时操作中会出现2人取到同一个ID。
换成3层的话会自动队列解决吗?
可以的话转3层有什么方便快捷的方法。
或者还有别的解决办法没。事务什么的行不,事务行的话怎么锁他比较好
[解决办法]
id 设置是自增的 话就没这个情况了
[解决办法]
转3层的话操作反尔复杂了。
如果你的二层是单笔提交的话不怎么会出现这个问题。
若是多笔提交可以写到触发器中去,让触发器去设置.
[解决办法]
declare @nid int;select @nid=newid from tb where item='凭证号';update tb set newid=newid+1 where item='凭证号';select @nid+1 as fret;--不知道具体取最大的做法,大致意思
[解决办法]
不能马上把那条记录的值先加1?
如果用友那个表的递增需要很复杂的工作(不能你的sql里能写的),才能完成,那就不能用这个方法了
[解决办法]
弱弱的说下,加个sleep?
[解决办法]
或者,换一个思路:既然用友自己会维护最大号
delphi只要记住一个当前有几人排队取用友的最大号。。。。。
[解决办法]
提交时再验证一次,(虽然这样也存在编号重复的几率,但会降低很多)
提交时捕获异常,如果重复,则提示用户重新点击保存,(再次验证并提交)。
[解决办法]