程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL入門學習之十五:事務處理的基本操作

MYSQL入門學習之十五:事務處理的基本操作

編輯:MySQL綜合教程

MYSQL入門學習之十五:事務處理的基本操作   相關鏈接: MYSQL入門學習之一:基本操作 http://www.BkJia.com/database/201212/173868.html MYSQL入門學習之二:使用正則表達式搜索 http://www.BkJia.com/database/201212/173869.html MYSQL入門學習之三:全文本搜索 http://www.BkJia.com/database/201212/173873.html MYSQL入門學習之四:MYSQL的數據類型 http://www.BkJia.com/database/201212/175536.html MYSQL入門學習之五:MYSQL的字符集 http://www.BkJia.com/database/201212/175541.html MYSQL入門學習之六:MYSQL的運算符 http://www.BkJia.com/database/201212/175862.html MYSQL入門學習之七:MYSQL常用函數 http://www.BkJia.com/database/201212/175864.html MYSQL入門學習之八:數據庫及表的基本操作 http://www.BkJia.com/database/201212/175867.html MYSQL入門學習之九:索引的簡單操作 http://www.BkJia.com/database/201212/176772.html MYSQL入門學習之十:視圖的基本操作 http://www.BkJia.com/database/201212/176775.html MYSQL入門學習之十一:觸發器的基本操作 http://www.BkJia.com/database/201212/176781.html MYSQL入門學習之十二:存儲過程的基本操作 http://www.BkJia.com/database/201212/177380.html MYSQL入門學習之十三:自定義函數的基本操作 http://www.BkJia.com/database/201212/177382.html MYSQL入門學習之十四:游標的基本操作 http://www.BkJia.com/database/201212/177384.html     事務處理(transaction processing)可以用來維護數據庫的完整性,它保證成批的MySQL操作要麼完全執行,要麼完全不執行。  www.2cto.com           但是並非所有的數據庫引擎都支持事務處理。MyISAM和InnoDB是兩種最常使用的引擎。前者不支持明確的事務處理管理,而後者支持。 一、幾個事務處理相關的術語         事務(transaction)指一組SQL語句;         回退(rollback)指撤銷指定SQL語句的過程;         提交(commit)指將未存儲的SQL語句結果寫入數據庫表;         保留點(savepoint)指事務處理中設置的臨時占位符(placeholder),可以對它發布回退(與回退整個事務處理不同)。   二、控制事務處理         管理事務處理的關鍵在於將SQL語句組分解為邏輯塊,並明確規定數據何時應該回退,何時不應該回退。 1、開始事務         START TRANSACTION;         使用如上語句標識事務的開始; 2、使用ROLLBACK         ROLLBACK命令用來回退(撤銷)MySQL語句:         下面的示例操作,首先開始一個事務,然後刪除了表test_inn中的所有內容,並查看表中的內容,顯示表已被清空。但執行ROLLBACK回退事務後,重新查詢表中的數據。表中的數據依然還在: [sql]  mysql> start transaction;   mysql> delete from test_inn;   mysql> select * from test_inn;   Empty set (0.00 sec)   mysql> rollback;   mysql> select * from test_inn;   +------+------------+   | id   | birthday   |   +------+------------+   |    1 | 2012-12-12 |   |    1 | 0000-00-00 |   |    1 | 2012-12-00 |   |    1 | 0000-00-00 |   +------+------------+   mysql> show create table test_inn;   +----------+----------------------------   | Table    | Create Table   +----------+----------------------------   | test_inn | CREATE TABLE `test_inn` (     `id` int(11) DEFAULT NULL,     `birthday` date DEFAULT NULL   ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |   +----------+----------------------------           注意:上例中表test_inn使用的是InnoDB引擎,若一個使用MyISAM引擎的表執行如上操作,則即使ROLLBACK後,可以發現,數據仍然被實實在在的清空。 3、使用COMMIT         一般的MySQL語句都是隱含提交(implicit commit)的,即提交(寫或保存)操作是自動進行的。         但是,在事務處理塊中,提交不會隱含進行。為進行明確的提交,需要使用COMMIT語句。         示例: [sql]  mysql> start transaction;   mysql> delete from test_inn;   mysql> commit;           當COMMIT或ROLLBACK語句執行後,啟動的事務會自動關閉。
  4、使用保留點         為了支持回退部分事務處理,必須在事務處理塊中合適的位置放置保留點。         創建保留點:SAVEPOINT sap_name;         回退至保留點:ROLLBACK TO sap_name;         釋放保留點:RELEASE sp_name;         保留點也可以在事務處理完成(執行一條ROLLBACK或COMMIT)後自動釋放。 5、更改默認的提交行為         SET autocommit=0;         autocommit標志是針對每個連接而不是服務器的。 參考:《MySQL必知必會》
 

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