日期:2014-05-16  浏览次数:21091 次

开两个客户端,然后更新同一条数据,引发违反并发性错误,求解决
无论是更新还是删除,都会报违反并发性错误,网上看了下,一般情况:
1 有重复记录(包括主键不正确)
2 有字段值在更新前已被修改
我应该是第二种,但是不知道如何解决,2个客户端都是同一条记录,虽然可以理解删除了,另一个客户端找不到这条记录报错,但是没理解同一条记录更新也会报违反并发性错误,有没有解决方法
------解决方案--------------------
一个是数据库加上一个时间截字段timestamp,二是程序用lock(){}进行块操作
------解决方案--------------------
可以使用数据锁,比如排它锁,详情请看
http://zhidao.baidu.com/question/208484797.html
------解决方案--------------------
数据库做 update 和delete 操作时会锁表的,此时对改表的其他操作会等待。

update和delete操作都有返回值,如果返回值=0,表示操作不成功,这个时候告诉 操作失败,再说一下可能的原因就是了,然后重新检索一下表显示给用户