事务、锁以及存储过程的并发问题
设:表[T]有一字段num,int类型
---- ------
[id] [num]
1 1
存储过程如下:
要求:执行完存储过程后,表中的num值不能大于2,但如果有两个用户同一时间执行上面存储过程的话,就会出现num的值为3.
请教如果解决?注意:请不要将select和update写成一句
---- ------
[id] [num]
1 1
存储过程如下:
begin tran
declare @N int
select @N=[num] from [T] where [id]=1
if(@N<2)
update [T] set [num]=[num]+1 where [id]=1
commit tran要求:执行完存储过程后,表中的num值不能大于2,但如果有两个用户同一时间执行上面存储过程的话,就会出现num的值为3.
请教如果解决?注意:请不要将select和update写成一句
...全文
相关推荐
解决存储过程被锁无法编译的问题
解决存储过程被锁无法编译的问题解决存储过程被锁无法编译的问题解决存储过程被锁无法编译的问题解决存储过程被锁无法编译的问题
在分布式事务中实现基于Oracle PLSQL UL LOCK的悲观离线锁
NULL 博文链接:https://ldd600.iteye.com/blog/534032
MYSQL锁表问题的解决方法
本文实例讲述了MYSQL锁表问题的解决方法。分享给大家供大家参考,具体如下: 很多时候!一不小心就锁表!这里讲解决锁表终极方法! 案例一 mysql>show processlist; 参看sql语句 一般少的话 mysql>kill thread_id; 就可以解决了 kill掉第一个锁表的进程, 依然没有改善. 既然不改善, 咱们就想办法将所有锁表的进程kill掉吧, 简单的脚本如下. #!/bin/bash mysql - u root - e " show processlist " | grep - i " Locked " >> locked_log . txt
mysql存储过程事务管理简析
本文将提供了一个绝佳的机制来定义、封装和管理事务,需要的朋友可以参考下
游标、事务、锁 .pptx
游标事务锁基本理论ppt,介绍了基本概念适用于学生讲解。游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力。


