MySQL的事務的處理

來源:互聯網
上載者:User

標籤:手動   comm   基本   關閉   預設   action   src   roo   mon   

步驟:

1.開啟事務 start transaction

當我們開啟一個事務的時候,我們對sql的操作都發生在記憶體中,但是沒有真正的反饋到資料庫磁碟的檔案中!

2.復原 rollback

復原,就是恢複到事務開啟之前的最原始的狀態!

注意:復原操作會自動的關閉一個事務,如果想再次執行事務,需要重新開啟事務!

3.提交 commit

 

事務的基本原理

 

普通的執行,之所以是立即執行並生效,因為預設的,MySQL對sql語句的執行是自動認可的!所以,開啟一個事務的本質,就是關閉了以前的自動認可的功能,而是由使用者手動提交(利用commit語句)!

總結事務的步驟:

1,  開啟事務

2,  如果執行成功,就提交commit

3,  如果有任何一條sql語句執行失敗,則復原rollback!

 

交易處理最典型的就是借還錢。下面以張三向李四還1000元為例

首先查看資料庫中各自的錢數

下面是處理還錢事務的代碼:

<?php /*** MySQL實現事務操作*/echo "<meta charset=utf-8>";// 1 串連資料庫$link = @mysql_connect(‘localhost‘,‘root‘,‘‘) or die(‘串連資料庫失敗‘);mysql_select_db(‘test‘,$link);mysql_query(‘set names utf8‘);// 2  開啟事務mysql_query("start transaction");//設定一個變數,用來判斷所有sql語句是否成功$flag = true;// 2.1執行事務中的一組sql語句 
// 李四的money+1000$sql = "update pdo set mone=money+1000 where name=‘李四‘";$res = mysql_query($sql);if (!$res) { //若sql語句執行失敗,把$falg設定為false $flag = false;}//張三的money-1000$sql = "update pdo set money=money-1000 where name=‘張三‘";$res = mysql_query($sql);if (!$res) { //若sql語句執行失敗,把$falg設定為false $flag = false;}// 2.2 判斷事務是否執行成功if ($flag) { //所有sql語句執行成功,把sql語句提交 mysql_query(‘commit‘); echo "還錢成功!";}else{ // 如其中一條執行失敗,則復原到事務開啟之前的狀態 mysql_query(‘rollback‘); echo "還錢失敗!";}

結果:

下面,我們故意把其中一個欄位寫錯,看看事務是否正常處理,資料庫中的錢數是否有變化!

// 李四的money+1000$sql = "update pdo set mone=money+1000 where name=‘李四‘";  //把moeny欄位錯寫成mone

結果:

結果是還錢失敗,並且資料庫中各自的錢數沒有變化,說明當某一條語句未執行成功時,事物不會提交,而會復原,把資料恢複到開始事務之前的原始狀態,這也是使用事務的作用,即只有當事務中所有sql語句全部執行成功,事務才會提交,否則會復原!

下篇會介紹PDO中交易處理

MySQL的事務的處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.