首頁 >資料庫 >mysql教程 >MySQL什麼是事務處理 ? (程式碼範例)

MySQL什麼是事務處理 ? (程式碼範例)

青灯夜游
青灯夜游轉載
2018-11-13 15:57:372898瀏覽

這篇文章帶給大家的內容是介紹MySQL什麼是事務處理 ? (程式碼範例)。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有幫助。

MySQL的事務處理

步驟:

1.開啟事務start transaction

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

2.回溯 rollback

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

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

3.提交commit

#交易的基本原則

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

總結交易的步驟:

##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
結果:

MySQL什麼是事務處理 ? (程式碼範例)

#結果是還錢失敗,且資料庫中各自的錢數沒有變化,說明當某一語句未執行成功時,事物不會提交,而會回滾,把資料恢復到開始事務之前的原始狀態,這也是使用事務的作用,即

只有當事務中所有sql語句全部執行成功,事務才會提交,否則會回滾!

總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。

以上是MySQL什麼是事務處理 ? (程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除