回答
事務是一組不comitted(換句話說,保存),直到你執行commit命令的變化。所以事務處理允許你說「我想對數據庫進行所有這些更改,但是在完成整個列表之前並不實際保存更改。」如果出現問題,您可以回滾(換句話說,撤消)您正在製作的任何更改。
事務(不僅在MySQL中)是一些代碼執行的方式。但是,如果出現問題,交易將被撤銷,如果整個過程沒有完成,則不做任何更改。
例子:
Transaction begins:
doA();
doB();
doC();
Transaction ends:
doD();
如果A失敗,什麼都沒有改變。
如果B失敗,沒有任何變化。
如果C失敗,沒有任何變化。
如果D失敗,A,B,C仍然執行。
如果在事務內部失敗了一個所謂的回滾操作,它將完成所有的更改。
事務不限於MySql - 大多數RDBMS使用它們。
當你正在做幾個相關的操作並需要它們以原子方式運行時,它們非常有用 - 也就是說,它們全部發生或沒有發生。
例如 - 您想要保存訂單和所有的訂單商品。這最好是在交易中完成,因爲沒有其他交易就沒有多少意義。
wikipedia文章內容豐富。
交易提供了一個「全有或全無」的主張,指出在數據庫中執行的每個工作單元必須完整或完全沒有任何影響。此外,系統必須將每個事務與其他事務隔離開來,結果必須符合數據庫中現有的約束,並且成功完成的事務必須寫入持久存儲。
事務處理當您有幾個相關的SQL語句時,它們必須成功或失敗,並將其作爲一個單一工作單元來提供幫助。
典型的例子是在兩個銀行賬戶之間轉移資金。你不希望撤回成功,存款失敗;您的銀行不希望存款成功,除非撤回。
事務監視事務中執行的所有SQL以確保全部成功。如果有任何失敗,它會回滾所有的語句。
謝謝,這也是很好的解釋 – dino 2010-12-23 13:57:12
wikipedia頁面這樣做是正義的。但基本上,一個事務允許你將語句作爲一個動作單獨執行。它也可以讓你消除錯誤。 也就是說
START TRANSACTION;
DELETE FROM foo WHERE bar = baz;
ROLLBACK;
將沒有變化。
交易也是孤立的。這意味着第一個聲明所看到的視圖與最後一個視圖相同。如果我們這樣做
SELECT * FROM foo;
SELECT * FROM foo;
在事務之外,如果有人在此期間更改了表,結果將會不同。然而,在一個事務中,兩者產生相同的結果 - 事務開始時表的視圖。
最後一條語句只對`SERIALIZABLE`事務隔離級別有效。 – Quassnoi 2010-12-23 13:46:28
還是我沒有得到什麼交易是在MySQL?
BEGIN TRANSACTION
INSERT
INTO mytable
VALUES (1)
INSERT
INTO mytable
VALUES (2)
COMMIT
由於這個結果,你要麼兩個值(1和2)表中,或讓沒有。
有沒有機會,一個值到那裏,另一個沒有。
下面是一些信息:
http://en.wikipedia.org/wiki/Database_transaction
基本上,(數據庫)交易是一種方法,組更新語句。如果某條語句出現問題,您可以「撤銷」(回滾)所有語句,以便數據庫中的信息保持「正確」。
一個簡單的例子是如果你將一個人及其地址插入到數據庫中。如果先插入地址,然後再插入人員,並且人員信息中存在錯誤,則不希望地址不在地址所在的人員的數據庫中。如果您使用了交易,則可以立即撤消所有操作。
我希望這有一定道理:)
在數據庫上執行插入或更新時,更新/插入會立即生效。當你有一個事務表時,更新/插入會排隊,直到你排隊完成所有需要執行的動作。此時你告訴MySQL在同一時間提交所有更改。現在的好處是,如果任何行動失敗,都不會產生影響。
- 1. 什麼是「MySQL事件」?
- 2. 什麼是Java中的隔離事務?
- 3. 什麼是MSDTC中的事務橋?
- 4. 什麼是hibernate中的事務管理?
- 5. Oracle:什麼是事務?
- 6. mysql服務器id是什麼樣的?
- 7. MySQL中的DataDir是什麼?
- 8. 什麼是MySQL中的SESSION?
- 9. 電子商務網站的理想MySQL事務隔離模式是什麼?
- 10. 什麼是「事務性」文件操作?
- 11. 什麼是「分佈式事務」?
- 12. 什麼是事務複製用於?
- 13. 什麼是SQL Server implict事務?
- 14. 什麼是MySQL的
- 15. 什麼是MySQL服務器實例?
- 16. MySql事務是否互斥?
- 17. MySQL事務是否是原子的?
- 18. 事務回滾和不提交有什麼區別(在MySQL中)?
- 19. 典型的EJB3/JPA/JSF中的事務範圍是什麼?
- 20. 在Java中使用JDBC事務的正確方法是什麼?
- 21. 什麼是在Postgres中回滾事務的好方法
- 22. SQL Server中嵌套事務的隔離範圍是什麼?
- 23. 在sql server中事務回滾的機制是什麼?
- 24. Azure表中的一項事務是什麼?
- 25. 確保mysql事務成功完成的可能方法是什麼?
- 26. InnoDB中的MySQL事務
- 27. MySQL事務中的EXECUTE
- 28. 在Java中的MySQL事務
- 29. DirectUI的事實是什麼?
- 30. 什麼是在MySQL
我想我明白了你的聰明解釋。謝謝。 – dino 2010-12-23 13:50:30