php 操作MySQL事務執行個體代碼

來源:互聯網
上載者:User
MySQL 事務主要用於處理操作量大,複雜度高的資料。比如說,在人員管理系統中,你刪除一個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的資訊,如信箱,文章等等,這樣,這些資料庫動作陳述式就構成一個事務!

這篇文章主要介紹了PHP操作MySQL事務的方法,以執行個體的形式較為詳細的分析了ACID特徵,具有不錯的參考借鑒價值,需要的朋友可以參考下

本文執行個體講述了PHP操作MySQL事務的方法,分享給大家供大家參考。具體方法如下:

一般來說,事務都應該具備ACID特徵。所謂ACID是Atomic(原子性),Consistent(一致性),Isolated(隔離性),Durable(持久性)四個詞的首字母所寫,下面以“銀行轉帳”為例來分別說明一下它們的含義:

① 原子性:組成交易處理的語句形成了一個邏輯單元,不能只執行其中的一部分。換句話說,事務是不可分割的最小單元。比如:銀行轉帳過程中,必須同時從一個帳戶減去轉帳金額,並加到另一個帳戶中,只改變一個帳戶是不合理的。
② 一致性:在交易處理執行前後,資料庫是一致的。也就是說,事務應該正確的轉換系統狀態。比如:銀行轉帳過程中,要麼轉帳金額從一個帳戶轉入另一個帳戶,要麼兩個帳戶都不變,沒有其他的情況。
③ 隔離性:一個交易處理對另一個交易處理沒有影響。就是說任何事務都不可能看到一個處在不完整狀態下的事務。比如說,銀行轉帳過程中,在轉帳事務沒有提交之前,另一個轉帳事務只能處於等待狀態。
④ 持久性:交易處理的效果能夠被永久儲存下來。反過來說,事務應當能夠承受所有的失敗,包括伺服器、進程、通訊以及媒體失敗等等。比如:銀行轉帳過程中,轉帳後帳戶的狀態要能被儲存下來。

在PHP中,mysqli 已經很好的封裝了mysql事務的相關操作。如下樣本:

代碼如下:

$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";$sql2 = "update ScoreDetail  set FScore = 300 where ID= '123456'";$sql3 = "insert into  ScoreDetail ID,Score) values ('123456',60)";$mysqli = new mysqli('localhost','root','','DB_Lib2Test');$mysqli->autocommit(false);//開始事物$mysqli->query($sql1);$mysqli->query($sql2);if(!$mysqli->errno){  $mysqli->commit();  echo 'ok';}else{ echo 'err';  $mysqli->rollback();}

在這裡,我們再使用 php mysql 系列函數執行事務。

代碼如下:

$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";$sql2 = "update ScoreDetail  set FScore = 300 where ID= '123456'";$sql3 = "insert into  ScoreDetail ID,Score) values ('123456',60)";$conn = mysql_connect('localhost','root','');mysql_select_db('DB_Lib2Test');mysql_query('start transaction');//mysql_query('SET autocommit=0');mysql_query($sql1);mysql_query($sql2);if(mysql_errno ()){    mysql_query('rollback');    echo 'err';}else{    mysql_query('commit');    echo 'ok';}// mysql_query('SET autocommit=1');// mysql_query($sql3);

在這裡要注意:

MyISAM:不支援事務,用於唯讀程式提高效能
InnoDB:支援ACID事務、行級鎖、並發
Berkeley DB:支援事務

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.