ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 数据库死锁的问题

数据库死锁的问题

原创 Linux操作系统 作者:z60010232 时间:2009-07-21 10:30:45 0 删除 编辑
我的SQL:
SET  TRANSACTION  ISOLATION  LEVEL  REPEATABLE  READ ;
update RECORD_TASK  WITH ( ROWLOCK )  set RESULT = ? , ACTFLAG = ? where  TASKID = ?

报错:
java.lang.Exception: com.microsoft.sqlserver.jdbc.SQLServerException: 事务(进程 ID 308)与另一个进程被死锁在 锁 | 线程 资源上,并且已被选作死锁牺牲品。请重新运行该事务。

引起原因:
表:RECORD_TASK  ,程序是一个多线程的程序,操作这个表的线程可能很多,但每一个线程 的TASKID  都是不同的,就是说每一个线程锁定的行应该是唯一而且相互不影响的.

问:
为什么还是会报死锁,SQL中把WITH ( ROWLOCK ) 改为WITH ( UPDLOCK ) 也还是一样的.
请教高人.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13925369/viewspace-624664/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-02

  • 博文量
    22
  • 访问量
    20725