<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      代碼詳細說明MySQL中對于事務的處理

      [摘要]這篇文章主要介紹了詳解MySQL中關于事務的處理,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧步驟:1.開啟事務 start transaction當我們開啟一個事務的...

      這篇文章主要介紹了詳解MySQL中關于事務的處理,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

      步驟:

      1.開啟事務 start transaction

      當我們開啟一個事務的時候,我們對sql的操作都發生在內存中,但是沒有真正的反饋到數據庫磁盤的文件中!

      2.回滾 rollback

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

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

      3.提交 commit

      事務的基本原理

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

      總結事務的步驟:

      1, 開啟事務

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

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

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

      首先查看數據庫中各自的錢數

      代碼詳解MySQL中關于事務的處理

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


      <?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 "還錢失。"; }


      結果:

      代碼詳解MySQL中關于事務的處理

      代碼詳解MySQL中關于事務的處理

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

      // 李四的money+1000
      $sql = "update pdo set mone=money+1000 where name='李四'"; //把moeny字段錯寫成mone

      結果:

      代碼詳解MySQL中關于事務的處理

      代碼詳解MySQL中關于事務的處理

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

      以上就是代碼詳解MySQL中關于事務的處理的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清