Tim*_*Tim 5 decompiler system.data
.NET System.Data命名空间中的位置是在执行update-command时确定SQL Server 2K表中的行是否已在客户端程序读入后更改的代码,即客户端行的版本是"陈旧"?
我想使用反编译器查看代码并弄清楚它是如何确定发生并发冲突的.我知道它将与表中的timestamp列和/或@@ rowcount有关,但是我想知道当库执行包含在存储过程中的更新命令时发生了什么.
存储过程将具有以下结构:
create proc foo_update
@id int,
@rowversion timestamp,
@val varchar(5)
as
begin
update foo set a = @val
where id = @id and mytimestampcolumn = @rowversion;
end
Run Code Online (Sandbox Code Playgroud)
也就是说,如果因为where子句将客户端System.Data.DataRow中的rowversion与数据库中行的timestamp值进行比较而且因为proc成功运行而没有更改行,则不会更新行.不会产生错误.然而,SqlClient库在它们的帮助下,将此场景报告为并发冲突.
谢谢