明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習分享的學(xué)習平臺!

MySQL什么是事務(wù)處理 ?(代碼示例)

[摘要]本篇文章給大家?guī)淼膬?nèi)容是介紹MySQL什么是事務(wù)處理 ?(代碼示例)。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所幫助。MySQL的事務(wù)處理步驟:1.開啟事務(wù) start trans...
本篇文章給大家?guī)淼膬?nèi)容是介紹MySQL什么是事務(wù)處理 ?(代碼示例)。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所幫助。

MySQL的事務(wù)處理

步驟:

1.開啟事務(wù) start transaction

當我們開啟一個事務(wù)的時候,我們對sql的操作都發(fā)生在內(nèi)存中,但是沒有真正的反饋到數(shù)據(jù)庫磁盤的文件中!

2.回滾 rollback

回滾,就是恢復(fù)到事務(wù)開啟之前的最原始的狀態(tài)!

注意:回滾操作會自動的關(guān)閉一個事務(wù),如果想再次執(zhí)行事務(wù),需要重新開啟事務(wù)!

3.提交 commit

事務(wù)的基本原理

普通的執(zhí)行,之所以是立即執(zhí)行并生效,因為默認的,MySQL對sql語句的執(zhí)行是自動提交的!所以,開啟一個事務(wù)的本質(zhì),就是關(guān)閉了以前的自動提交的功能,而是由用戶手動提交(利用commit語句)!【相關(guān)視頻教程推薦:MySQL教程

總結(jié)事務(wù)的步驟:

1, 開啟事務(wù)

2, 如果執(zhí)行成功,就提交commit

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

事務(wù)處理的示例:

事務(wù)處理最典型的就是借還錢,下面以張三向李四還1000元為例:

首先查看數(shù)據(jù)庫中各自的錢數(shù)

MySQL什么是事務(wù)處理 ?(代碼示例)

下面是處理還錢事務(wù)的代碼:

<?php 

/**
* MySQL實現(xiàn)事務(wù)操作
*/

echo "<meta charset=utf-8>";

// 1 連接數(shù)據(jù)庫
$link = @mysql_connect('localhost','root','') or die('連接數(shù)據(jù)庫失敗');
mysql_select_db('test',$link);
mysql_query('set names utf8');

// 2  開啟事務(wù)
mysql_query("start transaction");
//設(shè)置一個變量,用來判斷所有sql語句是否成功
$flag = true;

// 2.1執(zhí)行事務(wù)中的一組sql語句 
   
// 李四的money+1000
$sql = "update pdo set mone=money+1000 where name='李四'";
$res = mysql_query($sql);
if (!$res) {
    //若sql語句執(zhí)行失敗,把$falg設(shè)置為false
    $flag = false;
}

//張三的money-1000
$sql = "update pdo set money=money-1000 where name='張三'";
$res = mysql_query($sql);
if (!$res) {
    //若sql語句執(zhí)行失敗,把$falg設(shè)置為false
    $flag = false;
}

// 2.2 判斷事務(wù)是否執(zhí)行成功
if ($flag) {
    //所有sql語句執(zhí)行成功,把sql語句提交
    mysql_query('commit');
    echo "還錢成功!";
}else{
    // 如其中一條執(zhí)行失敗,則回滾到事務(wù)開啟之前的狀態(tài)
    mysql_query('rollback');
    echo "還錢失!";
}

結(jié)果:

MySQL什么是事務(wù)處理 ?(代碼示例)

MySQL什么是事務(wù)處理 ?(代碼示例)

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

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

結(jié)果:

1.jpg

MySQL什么是事務(wù)處理 ?(代碼示例)

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

總結(jié):以上就是本篇文章的全部內(nèi)容,希望能對大家的學(xué)習有所幫助。

以上就是MySQL什么是事務(wù)處理 ?(代碼示例)的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


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