小编Sha*_*rkz的帖子

交易和锁

我目前正在处理交易并感到困惑。这些事务是在数据访问层创建的,而不是在数据库(SQL Server 2008)的存储过程中创建的。我了解为事务设置的隔离级别的正常工作。我无法理解以下场景中会发生什么。

  1. 发起交易
  2. 选择 ID=1 的员工。
  3. 更新员工 ID=1。
  4. 犯罪

有多个线程在做同样的事情,但 ID 不同。但可能存在两个线程查找相同 ID 的情况。我们将它们称为线程 A 和 B。对于这两个线程,上述步骤按以下方式进行。隔离级别设置为可重复读取。

A1。发起交易A2。选择 ID=1 的员工。B1。发起交易B2。选择 ID=1 的员工。A3。更新员工 ID=1。A4。提交 B3。更新员工 ID=1。B4。犯罪

我真正想从事务中实现的是,当线程 A 选择特定记录时,线程 B 甚至不应该能够选择该记录。我不知道在这种情况下使用事务和锁是否走在正确的轨道上。

等待回复:)

c# transactions sql-server-2008 locks

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

locks ×1

sql-server-2008 ×1

transactions ×1