2010-01-29 84 views
19

我正在閱讀關於如何使用數據庫類型和數據庫引擎的事務的非常詳細的教程,但我還沒有找到一個指導,告訴我什麼時候以及爲什麼我應該使用它們。什麼時候應該在我的查詢中使用事務?

我知道交易通常用於銀行業務,所以當我們使用金錢數據時,但我可以想象他們以其他方式使用。

今天我正在爲一個關係數據庫的各種INSERT語句工作,我想知道這是否是我應該使用它們的情況之一。

我得到的印象是,我不知道數據可能部分丟失的情況(除編碼器錯誤之外),所以我總是擔心什麼時候應該使用它們。

有人可以解釋或給這些基本規則的一些鏈接?我正在使用MySQL 5.0.8。我是否應該爲所有需要交易的表使用InnoDB?如果是的話,是InnoDB慢於普通的MyISAM,但我不應該擔心這一點?

感謝

回答

15

基本上你有一個對外界的變化或任何敏感的工作單位需要隨時回滾每一個變化,如果發生錯誤或其他原因的能力。

Look here for some excellent answers and their reasons for using them

+0

感謝您的幫助,我還發現了一些與此處的交易相關的技術http://www.kennynet.co.uk/2008/12/02/php-pdo-nested-transactions/ – vitto 2010-01-29 11:25:31

7

除了Nick Craver寫的內容之外,當您需要以原子方式執行一系列寫操作時,您會希望使用事務;也就是說,他們都應該成功,否則都不應該成功。

6

當有可能無法完成或其他人在您的任務中間讀取或寫入可能導致數據損壞的可能性時,應使用事務。這些措施包括但不限於:

  • 從表讀出後續刪除
  • 寫作相關的數據到多個表
3

當你有一組必須是原子操作您使用交易(全部成功或未成功)將這些操作包裝在事務中允許您回滾在遇到錯誤時已成功的操作。它還可以確保您使用的數據是一致的,因爲在交易完成之前會鎖定數據。

0

在一些框架中,例如春天,如果失敗,自動事務允許重新執行事務。

相關問題