数据库存储过程死锁问题,请有类似经验者帮忙解决!
SQL 2000数据库,有一个存储过程,这个存储过程对同一张表进行先后进行Insert和update操作.存储过程结构简述如下:
声明变量
开始事务
对其他表操作
Insert表A
Update 表A Where....
提交事务
在应用程序中,调用结构简述如下:
先提取大约80条记录,
开始事务
循环开始
每条记录执行一次上述的存储过程
循环结束
提交事务
如果在应用程序中只开启一个线程,则没有问题,如果同时开启四个线程,则肯定出现操作不成功的情况.
这几天的测试及排除操作如下:
1 在应用程序中如果在循环体外面不开启事务,则可以多线程成功操作.但是由于实际应用是用PB开发的,PB一打开窗体就是创建事务,没有办法取消.
2 在存储过程中将Update语句或者Insert语句的任意一个注销,也可以成功操作.但是如果两个一起执行则必死无疑
为什么?请各位帮忙解决