2017-10-10 22 views
-2

會發生什麼情況表中的SQL時,從不同的系統,將在SQL引擎重疊,同時執行兩個更新語句。恰好一個表2次併發更新(SQL)什麼

哪一個會先執行,爲什麼?

+0

沒有第一個或第二個。如果它們影響不同的行,它們將同時執行。 – fhossfel

+0

問題在於「sql如何處理併發更新的併發性」。我不認爲它應該被關閉 – gbn

回答

0

「同時」沒有這樣的交易
一個將永遠在另一個之前或之後。

  • 如果他們改變同一 /同一列(一個或多個),那麼一個將等待其它,並覆蓋或失敗(取決於行版本/快照模式)
  • 如果他們改變不同行然後每個是獨立的其他

哪一個將是第一個?如果他們實際上是在同一個時刻到達的,則取決於哪一個是先安排的。

0

的客戶端不改變表,他們要求的服務器會替他們。然後按照某種順序執行這些語句是服務器的工作。

最終的結果是什麼時,他們都更新同一行,依賴於聲明。

  • 如果where子句只是WHERE id=10,那麼最後一個將覆蓋第一個的更改。
  • 如果WHERE子句使用類似於WHERE id=10 and theColumn=knownvalue(其中「knownvalue」是該列的前值,只要客戶知道),那麼第一個勝利,最後一個未進行任何更新,因爲該列被改變了。