为了账号安全,请及时绑定邮箱和手机立即绑定

关于数据库死锁的问题

关于数据库死锁的问题

弑天下 2018-11-11 14:21:57
我写的存储过程,主要语句有:insert into T(code,amount)values('!@#$%',xx) ,  update T set code=yy where code='!@#$%',有老大说会发生死锁,给改成:insert into T(amount)values(xx) ,  set @currentid = @@identity,  update T set code=yy where id = @currentid,气死,这两条语句有什么区别?到底怎么产生死锁,谁能给一个必然死锁的例子看看?.
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

你好,我尝试作答一下

从你的题目中我先推论你的表结构为

T { id[自增], code, amount }


INSERT INTO T (
  code,
  amount
) VALUES (
 '!@#$%',
 xx
)

UPDATE T SET
  code = yy
WHERE
  code = '!@#$%' --你这里的目的是更新上面插入的行没做吧.

/*
 但是如果其他的事务也插入了code值为'!@#$%'的话~你说会不会发生问题呢?
 而你老大的where id = @@identity 你说还会不会发生问题呢?
*/


查看完整回答
反对 回复 2018-11-15
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

区别应该在 identity 和 !@#$% .

查看完整回答
反对 回复 2018-11-15
  • 2 回答
  • 0 关注
  • 614 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信