我写的存储过程,主要语句有:
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,
气死,这两条语句有什么区别?
到底怎么产生死锁,谁能给一个必然死锁的例子看看?.
你好,我尝试作答一下
从你的题目中我先推论你的表结构为
T { id[自增], code, amount }
INSERT INTO T (
code,
amount
) VALUES (
'!@#$%',
xx
)
UPDATE T SET
code = yy
WHERE
code = '!@#$%' --你这里的目的是更新上面插入的行没做吧.
/*
但是如果其他的事务也插入了code值为'!@#$%'的话~你说会不会发生问题呢?
而你老大的where id = @@identity 你说还会不会发生问题呢?
*/
关注。
insert into T(amount)values(xx) ,
set @currentid = @@identity,
update T set code=yy where id = @currentid,
一楼说的上面这个办法解决了死锁了吗?