我開始與SqlConnection.BeginTransaction()
進行交易,並執行DELETE
和一些INSERT
s。在隔離級別上我可以進行任何配置,以允許任何查詢在事務過程中以「髒方式」讀取數據?將隔離級別配置爲允許在更新數據時允許ReadUncommited
基本上我想防止鎖定,而我更新數據。問題是;我無法控制SELECT
。如果我在事務中定義了一個ReadUncommited
隔離級別,外部查詢是否有權在不等待的情況下讀取數據,或者是否需要在此查詢上定義它?
例如:
try
{
connection.Open();
transaction=connection.BeginTransaction(IsolationLevel.ReadUncommited);
// DELETE
foreach (int i in fibarray)
{
// INSERTS
}
transaction.Commit();
}
catch (Exception ex)
{
if (transaction.Connection != null)
transaction.Rollback();
}
同時,SELECTS
另一臺機器上我沒有訪問。
每個連接/會話都爲自己建立了自己願意忍受的骯髒程度。沒有辦法讓一個*不同的*連接突然強制連接看到較髒的數據(或者相反,更嚴格) –
@Damien_The_Unbeliever所以沒有辦法告訴我的更新命令不要阻塞。它完全取決於「'SELECT」的一面。 – SysDragon
是的,'SELECT'擁有對其鎖定/阻止行爲的全部控制權。並且'UPDATE'總是必須應用一些排他鎖才能成功完成。 –