我一直在阅读交易隔离级别,我不确定我是否理解正确。我需要帮助。
请考虑以下Csharp伪代码:
在步骤3中,我怎样才能不考虑步骤2中更新的数据?我在.Net代码中创建事务时应该设置事务隔离级别。这是SQL服务器存储过程的伪代码。
select @count=count(*) from table1;
if @count > 1
update table2
答案 0 :(得分:1)
只是更改订单并不能解决您的问题?我的意思是,如果步骤2更改了表1数据,并且您需要完整地执行步骤3,请先执行步骤3。它看起来像这样:
考虑到您刚评论的内容,您可能需要使用 IsolationLevel.Snapshot 。但是,某些数据库默认情况下不启用此功能。当您更新源表时,它基本上创建了当前数据的副本到tempdb。
答案 1 :(得分:0)
据我所知,没有任何隔离级别允许您在修改后访问行的先前版本。
要实现您的要求,您需要修改第2步以跟踪其更改内容并使其可用于第3步。否则,您需要将触发器添加到步骤2中修改的表中并跟踪这种变化。