日期:2014-05-19  浏览次数:20475 次

数据库操作如何避免这样的情况发生呢!
比如有一句语句update   table   set   maxid=maxid+1
假如这时候有多个用户同时频繁操作!会不会造成数据出错!
比如一个用户原来maxid为5现在他执行时候要+1,但是还没完成的时候,又有其他拥护来了!这时候数据库还没变成6呢,还是5就会出错了吧!一般是怎样控制这种情况呢!

------解决方案--------------------
呵呵,这个楼主不用操心,lock就是干这个的.
最好加个where,否则可能多个用户update后的结果不是你想要的。
------解决方案--------------------
如果不用事务处理的话,是会出现楼主的现象的.所以这种情况必须用事务处理才行.
保证原子性.
------解决方案--------------------
这就是数据库管理中的并发性控制嘛,这是数据库管理系统必须要实现的一个基本核心功能。用户能够做的,就是选择使用哪个控制级别,比如共享锁、独占锁等等,而选择又是基于应用需求的。

事务跟这个并发控制是没有必然联系的。事务是保证应用系统中事务的原子性,而并发控制是保证数据库数据的完整性。事务一般是在软件程序中主动发起的,而并发控制是数据库管理系统底层自动实现的。


------解决方案--------------------
顶楼上的
------解决方案--------------------
数据库会自动处理的,会自动分配适合的lock的,楼主根本不用操心.楼主说的现象不会出现.
强烈建议:where,要写where条件.否则,你可能执行多次.
假设2个人在同时执行下面语句,则只有一个人可以成功.
update table set maxid=maxid+1 where xxx and maxid = 5
但如果2个人都执行下面语句,则他们都会成功.
update table set maxid=maxid+1