这也是网上看到的,感觉解决方法不错。
这是一个很有代表性的问题,在C/S结构的数据库应用程序中经常碰到,如果这种问题
不能很好地解决,可能造成系统速度缓慢、死锁甚至崩溃。我们在开发的过程中多次碰到了
这样的问题。有些辣手,但还是冲过去了。
解决这种问题应该本着两个原则:
1、要建立PRIMARY KEY;
2、事务开启到提交之间的时间要尽可能地短。
我们处理的时候用到了两种方法:
1、建立一个专门的表,用来存放最大值。每次建立新单据的时候,提取该值并加1,
然后再写回。这是一种静态的处理方法。
2、在单据完成并提交数据时,读取编号并加1,开启事务,提交事务。这个时间非常
短,一般不会出现编号重复,即使出现重复,数据回滚,可以重新提交。这是一种动态的
处理方法。