這篇文章帶給大家的內容是介紹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結果: #結果是還錢失敗,且資料庫中各自的錢數沒有變化,說明當某一語句未執行成功時,事物不會提交,而會回滾,把資料恢復到開始事務之前的原始狀態,這也是使用事務的作用,即
只有當事務中所有sql語句全部執行成功,事務才會提交,否則會回滾!
總結:以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。以上是MySQL什麼是事務處理 ? (程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!