我刚刚意识到我根本不了解 .NET/SQL Server 事务是如何工作的。我觉得我可能会把信封推到“没有愚蠢的问题”,但我读过的所有文档都不容易理解。我将尝试以这样一种方式来表达这个问题,答案几乎是是/否。
如果我在一台有效执行此操作的机器上运行 .NET 进程(不是真正的代码):
For i as Integer = 0 to 100
Using TransactionScope
Using SqlClient.SqlConnection
'Executed using SqlClient.SqlCommand'
"DELETE from TABLE_A"
Thread.Sleep(5000)
"INSERT INTO TABLE_A (Col1) VALUES ('A')"
TransactionScope.Complete()
End Using
End Using
Next i
是否有任何事务/隔离级别配置会使“SELECT count(*) FROM TABLE_A”在从其他进程运行时始终返回“1”(即即使表中没有行时有 5 秒的时间块在交易的背景下)?