Transaction (Process ID) was deadlocked on lock resources with another process and has been chose

本文探讨了在使用SQL Server 2008处理多线程操作时遇到的死锁问题,具体为在更新记录时出现的事务被选为死锁受害者的错误提示。深入分析后发现,问题根源在于更新的表没有设置主键,而此表是通过SQL Server 2008自带的导入功能从原有表中获取的,导致新表缺少主键信息。文章详细解释了主键在数据库操作中的作用,并提出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        最近在做多线程处理sql server2008某个表中的数据时,在Update记录的时候出现了【Transaction (Process ID 146) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction】显示的错误,百思不得其解,还以为是程序中应用了lock的原因导致死锁呢,后来发现不是这么回事,是我处理的表没有设置主键,而更新时是根据主键进行更新的。

        又仔细一想,是因为我更新的这个表是通过sql server2008自带的导入表的功能倒过来了,原来的表是有主键的,但是通过导入方式过来的新表确实没有主键的,这个问题不太清楚,如果提前知道,设置好主键就不会出现这样的问题了。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值