2010-07-21 81 views

回答

1

不,它不是冬眠特定的。

簡答:交易是「工作原子單位」,具有一致的世界觀。一旦交易完成,受保護的「視圖」需要通過世界觀(COMMITTTED)來糾正 - 或者在只讀交易的情況下,可以簡單地解除一致的視圖(只需要在交易過程中一致)。

較長的答案:有很多不同類型的事務(READ UNCOMMITTED,READ COMMITTED,SERIALIZABLE,REPEATABLE READ等)影響細節。

Wiki: Database TransactionIsolation (DBMS) - 後者需要幾個鏈接點擊,才能找到:-)

想象一下很快做作順序,A和B表示使用DB不同的演員和每一個動作在它自己的運行單關閉隱性交易(而不是其他):

  1. 一個在用戶列表中讀取
  2. 乙刪除用戶(以及所有相關的數據)
  3. A獲得每個用戶的信息(使用之前獲取的信息)。但是,至少有一個用戶不再存在。不知怎的,更好地處理它。

請參閱隔離wiki文章的「示例查詢」部分。

+0

對,但是如果一個服務器操作正在執行單個讀操作,那麼當寫併發操作沒有正確類型的事務隔離時,不會發生未提交的讀操作類型錯誤? – hvgotcodes 2010-07-21 23:32:19

+0

@hvgotcodes我會對我先前的評論進行一些評估。如果您只是在SQL Server *中進行單一讀取,則不必擔心事務,因爲您將自動處於隱式事務中。 – 2010-07-21 23:34:29