我有一个死锁的问题..
我正在尝试为我的数据库的更新提供 sql 依赖项。
我通过在一系列表上创建触发器来做到这一点。修改表时,我在辅助表中增加一个整数,例如。[dbo].[计数器]。然后我在这个表上放置一个 SQL 依赖项,以了解哪个表是从代码更新的。
但是,我放置触发器的目标表可以在事务中使用,在这种情况下,很容易使事务死锁。
即 tbl1 在插入/更新/删除时触发以更新计数器表 tbl2 在插入/更新/删除时触发以更新计数器表
事务 A 发生在 thread1 tbl1 被修改,触发了 counter 表的更新
事务 B 发生在线程 2 tbl2 被修改,这触发了计数器表的更新,线程 2 现在被阻塞等待线程 1
同时在 thread1 上,事务 A 继续,并更新另一个表(tbl1 或 tbl2)
现在发生死锁,其中一个线程被选为受害者。
我的问题是,是否有更好的方法来创建触发器以消除死锁的可能性?任何人都知道 ASP.NET 中的默认 SQLDependency 如何解决这个问题?