程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 講解MySQL中的事務特性

講解MySQL中的事務特性

編輯:關於MYSQL數據庫

一個事務是一個連續的一組數據庫操作,就好像它是一個單一的工作單元進行。換言之,永遠不會是完整的事務,除非該組內的每個單獨的操作是成功的。如果在事務的任何操作失敗,則整個事務將失敗。

實際上,會俱樂部許多SQL查詢到一個組中,將執行所有的人都一起作為事務的一部分。
事務的特性:

事務有以下四個標准屬性的縮寫ACID,通常被稱為:

  •     原子性: 確保工作單元內的所有操作都成功完成,否則事務將被中止在故障點,和以前的操作將回滾到以前的狀態。
  •     一致性: 確保數據庫正確地改變狀態後,成功提交的事務。
  •     隔離性: 使事務操作彼此獨立的和透明的。
  •     持久性: 確保提交的事務的結果或效果的系統出現故障的情況下仍然存在。
  • 在MySQL中,事務開始使用COMMIT或ROLLBACK語句開始工作和結束。開始和結束語句的SQL命令之間形成了大量的事務。
  • COMMIT & ROLLBACK:
  • 這兩個關鍵字提交和回滾主要用於MySQL的事務。
  •     當一個成功的事務完成後,發出COMMIT命令應使所有參與表的更改才會生效。
  •     如果發生故障時,應發出一個ROLLBACK命令返回的事務中引用的每一個表到以前的狀態。

可以控制的事務行為稱為AUTOCOMMIT設置會話變量。如果AUTOCOMMIT設置為1(默認值),然後每一個SQL語句(在事務與否)被認為是一個完整的事務,並承諾在默認情況下,當它完成。 AUTOCOMMIT設置為0時,發出SET AUTOCOMMIT =0命令,在隨後的一系列語句的作用就像一個事務,直到一個明確的COMMIT語句時,沒有活動的提交。

可以通過使用mysql_query()函數在PHP中執行這些SQL命令。
通用事務例子

這一系列事件是獨立於所使用的編程語言,可以建立在任何使用的語言來創建應用程序的邏輯路徑。
可以通過使用mysql_query()函數在PHP中執行這些SQL命令。

  •     BEGIN WORK開始事務發出SQL命令
  •     發出一個或多個SQL命令,如SELECT,INSERT,UPDATE或DELETE
  •     檢查是否有任何錯誤,一切都依據的需要。
  •     如果有任何錯誤,那麼問題ROLLBACK命令,否則發出COMMIT命令。

在MySQL中的事務安全表類型:

如果打算使用MySQL事務編程,那麼就需要一種特殊的方式創建表。有很多支持事務但最流行的是InnoDB表類型。

從源代碼編譯MySQL時,InnoDB表支持需要特定的編譯參數。如果MySQL版本沒有InnoDB支持,請互聯網服務提供商建立一個版本的MySQL支持InnoDB表類型,或者下載並安裝Windows或Linux/UNIX的MySQL-Max二進制分發和使用的表類型在開發環境中。
如果MySQL安裝支持InnoDB表,只需添加一個的TYPE=InnoDB 定義表創建語句。例如,下面的代碼創建InnoDB表tcount_tbl:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> create table tcount_tbl
  -> (
  -> tutorial_author varchar(40) NOT NULL,
  -> tutorial_count INT
  -> ) TYPE=InnoDB;
Query OK, 0 rows affected (0.05 sec)

請查看下面的鏈接了解更多關於: InnoDB

可以使用其他GEMINI或BDB表類型,但它取決於您的安裝,如果它支持這兩種類型。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved