凡在.NET System.Data命名空間是確定,執行更新命令時的代碼,無論是行在SQL Server 2K表已經改變了客戶端程序已經在閱讀後,即該行的客戶端版本爲「過時」?.NET System.Data命名空間編譯:我在哪裏可以找到的代碼與SQL服務器併發衝突
我想用一個反編譯看看代碼,弄清它是如何確定併發衝突發生。我知道這將有事可做與表和/或@@ ROWCOUNT timestamp列,但我想看看是什麼原因,當包裹在一個存儲過程的更新命令是由庫執行上會。
存儲的過程將有這樣的結構:
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
也就是說,沒有行會,如果它已經因爲其rowversion在客戶端System.Data比較where子句的改變更新。 DataRow設置爲數據庫中行的時間戳值,proc將成功運行並且不會生成錯誤。然而,SqlClient庫在幫助中將這種情況報告爲併發衝突。
感謝
您使用的是'SqlDataAdapter'?你打電話過得怎麼樣?你想通過找到這個源代碼來實現什麼,繞過併發衝突錯誤? – 2012-04-08 20:10:20
@Jordão:我想知道要拋出錯誤的必要條件,即圖書館是比較時間戳值還是僅查看受影響記錄的數量。 – Tim 2012-04-10 18:42:44