我写的存储过程,主要语句有: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 你说还会不会发生问题呢?
*/
- 2 回答
- 0 关注
- 614 浏览
添加回答
举报
0/150
提交
取消