怎么解决mysql 事务出现死锁的问题

例如事务一和2同时分别执行"updateuseseta=1whereuid=1","updateuseseta=2whereuid=1";然后就会出现死锁卡死问题,请问解... 例如事务一和2同时分别执行 "update use set a=1 where uid=1","update use set a=2 where uid=1";
然后就会出现死锁卡死问题,请问解决办法是什么。执行修改前需要什么操作。最好给下说明谢谢!
展开
 我来答
fuyh16
2019-10-06 · TA获得超过222个赞
知道小有建树答主
回答量:462
采纳率:82%
帮助的人:120万
展开全部
这个问题,问的就有问题,你对同一条记录,同时想将use设置成1或2,业务逻辑就有问题啊。我原来处理过类似的问题,介绍一下我的处理方式,在use表中,增加一个字段b,默认值是0,在事物一开始的时候,先将你要处理的那条记录的b值,设置成1,再事物全都处理完毕后,在将1更新成0。如果事物一开始发现这条记录的b值是1,则直接提示用户,正在对同一条数据进行处理,请稍后在试,代码里直接就return了,不往下进行。
说白了,就是用一个字段,把一条记录锁住,事物一开始先判断锁没锁,如果锁了就提示用户,如果没锁,就锁住,然后向下进行,但是,无论是正常处理完,还是回滚,或者是抛出异常,都不要忘了把锁解开。
更多追问追答
追问
判断具体怎么判断
追答
晕,怎么判断???select b from use where uid=1查出来的结果判断是0还是1
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式