我目前在处理事务并感到困惑。这些事务是在数据访问层创建的,而不是在数据库(SQL Server 2008)的存储过程中创建的。 我了解设置事务隔离级别的正常工作流程。 我无法理解以下情况应该发生什么。
- 开始一个事务
- 选择ID = 1的员工。
- 更新ID = 1的员工。
- 提交
有多个线程做相同的事情,但是不同的ID。 但可能存在两个线程查找相同的ID的情况。 我们称它们为线程A和B。 与两个线程相关的上述步骤如下所示。 隔离级别设置为可重复读。
A1. 开始一个事务 A2. 选择ID = 1的员工。 B1. 开始一个事务 B2. 选择ID = 1的员工。 A3. 更新ID = 1的员工。 A4. 提交 B3. 更新ID = 1的员工。 B4. 提交
我真正想从事务中实现的是,当Thread A选择特定记录时,Thread B甚至不能选择那条记录。 我不知道在这种情况下是否应该使用事务和锁定来进行处理。
等待回复 :)