数据库死锁问题

deepmist 2011-03-12 11:06:26
有一个作业每天固定时间执行,就是计算一些数据并更新(批量update语句)到一张表(表A)中。
但是昨天作业执行时出现以下错误,主要是说死锁的问题。

Transaction (Process ID 122) was deadlocked on lock resources with another process and has
been chosen as the deadlock victim. Rerun the transaction. [SQLSTATE 40001] (Error 1205).
The step failed.

我这里的情况是:在作业更新表A时,若用户在系统中进行操作,也会有sql语句更新表A。
他们同时更新表A,导致错误。
请问如何避免这种错误,或者sql语句需要怎么优化呢?
...全文
123 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hecker728 2011-03-14
  • 打赏
  • 举报
回复
UPDLOCK :指定在读表中数据时设置修改锁(update lock)而不是设置共享锁,该锁一直保持到这个语句或整个事务结束,使用UPDLOCK的作用是允许用户先读取数据(而且不阻塞其他用户读数据),并且保证在后来再更新数据时,这一段时间内这些数据没有被其他用户修改。
deepmist 2011-03-14
  • 打赏
  • 举报
回复
deepmist 2011-03-14
  • 打赏
  • 举报
回复
deepmist 2011-03-12
  • 打赏
  • 举报
回复
deepmist 2011-03-12
  • 打赏
  • 举报
回复
tanktang811010 2011-03-12
  • 打赏
  • 举报
回复
你在数据库里建个表来处理死锁状态,如果有可能死锁的数据库请求就将表状态更改,执行完再释放表状态。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧