關於mysql交易處理

來源:互聯網
上載者:User


1.為什麼需要使用事務?

事務是單個的工作單元。如果某一事務成功,則在該事務中進行的所有資料修改均會提交,
成為資料庫中的永久組成部分。如果事務遇到錯誤且必須取消或復原,則所有資料修改均被清除。
事務使用,可以提供一個機制,防止在執行過程中出錯而之前正確的sql有影響了資料庫的情況出現;

交易處理機制在程式開發過程中有著非常重要的作用,它可以使整個系統更加安全,
例如在銀行處 理轉賬業務時,如果A賬戶中的金額剛被發出,而B賬戶還沒來得及接收就發生停電,
這會給銀行和個人帶來很大的經濟損失。採用交易處理機制,一旦在轉賬過程 中發生意外,則
程式將復原,不做任何處理。


2.MYSQL的交易處理主要有兩種方法

1.用begin,rollback,commit來實現    begin開始一個事務    rollback交易回復          commit 事務確認
2.直接用set來改變mysql的自動認可模式    mysql預設是自動認可的,也就是你提交一個query,就直接執行!可以通過    set autocommit = 0 禁止自動認可    set autocommit = 1 開啟自動認可    來實現事務的處理。
提示:但要注意當用set autocommit = 0 的時候,你以後所有的sql都將作為交易處理,直到你用commit確認或 rollback結束,注意當你結束這個事務的同時也開啟了新的事務!按第一種方法只將當前的做為一個事務!

3.mysql支援事務儲存引擎的選擇

MYSQL只有 INNODB和BDB類型的資料表才支援交易處理,其他的類型是不支援的! 事務都應該具備ACID特徵。所謂ACID是Atomic原子性),Consistent一致性),Isolated隔離性),Durable持久性)四個詞的首字母所寫原子性:組成交易處理的語句形成了一個邏輯單元,不能只執行其中的一部分。換句話說,事務是不可分割的最小單元。比如:銀行轉帳過程中,必須同時從一個帳戶減去轉帳金額,並加到另一個帳戶中,只改變一個帳戶是不合理的。

一致性:在交易處理執行前後,資料庫是一致的。也就是說,事務應該正確的轉換系統狀態。比如:銀行轉帳過程中,要麼轉帳金額從一個帳戶轉入另一個帳戶,要麼兩個帳戶都不變,沒有其他的情況。

隔離性:一個交易處理對另一個交易處理沒有影響。就是說任何事務都不可能看到一個處在不完整狀態下的事務。比如說,銀行轉帳過程中,在轉帳事務沒有提交之前,另一個轉帳事務只能處於等待狀態。

持久性:交易處理的效果能夠被永久儲存下來。反過來說,事務應當能夠承受所有的失敗,包括伺服器、進程、通訊以及媒體失敗等等。比如:銀行轉帳過程中,轉帳後帳戶的狀態要能被儲存下來。

4.事務的簡單的執行個體

<?php
$db = mysql_connect('localhost','root','') or die('連結失敗');//連結資料庫
mysql_select_db('test');//選擇資料庫
mysql_query("set autocommit = 0");//設定mysql不自動認可
mysql_query("begin");//設定事務的開始
//插入資料
$sql = "INSERT INTO `order` (`order_num`) VALUES ('1sadfsdfafasdfasdffffffffsd1111111')";
$sql2 = 'INSERT INTO `order` (`order_num`) VALUES ("1sadfsdfafasdfasdffffffffsd1111111")';
$q = mysql_query($sql);
$q2 = mysql_query($sql2);
if(!$q && !q2){
    mysql_query("rollback");//執行復原
    echo '執行失敗,資料復原';exit;
}
mysql_query("COMMIT");//提交事務
echo "成功";
mysql_close($db);

本文出自 “燭光照亮天堂-IT技術之路” 部落格,請務必保留此出處http://wuhai.blog.51cto.com/2023916/974994

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.