• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    MySQL事務處理與應用簡析

    來源:懂視網 責編:小采 時間:2020-11-09 21:03:02
    文檔

    MySQL事務處理與應用簡析

    MySQL事務處理與應用簡析:事務處理在各種管理系統中都有著廣泛的應用,比如人員管理系統,很多同步數據庫操作大都需要用到事務處理。比如說,在人員管理系統中,你刪除一個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數據庫操作語句
    推薦度:
    導讀MySQL事務處理與應用簡析:事務處理在各種管理系統中都有著廣泛的應用,比如人員管理系統,很多同步數據庫操作大都需要用到事務處理。比如說,在人員管理系統中,你刪除一個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數據庫操作語句

    事務處理在各種管理系統中都有著廣泛的應用,比如人員管理系統,很多同步數據庫操作大都需要用到事務處理。比如說,在人員管理系統中,你刪除一個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數據庫操作語句就構成一個事務!
    刪除的SQL語句
    delete from userinfo where ~~~
    delete from mail where ~~
    delete from article where~~
    ~~
    如果沒有事務處理,在你刪除的過程中,假設出錯了,只執行了第一句,那么其后果是難以想象的!
    但用事務處理。如果刪除出錯,你只要rollback就可以取消刪除操作(其實是只要你沒有commit你就沒有確實的執行該刪除操作)
    一般來說,在商務級的應用中,都必須考慮事務處理的!
    查看inodb信息
    shell> /usr/local/mysql -u root -p
    mysql> show variables like "have_%"
    系統會提示:
    +------------------+-------+
    | Variable_name     | Value |
    +------------------+-------+
    | have_bdb   | YES    |
    | have_crypt | YES    |
    | have_innodb| YES    |
    | have_isam  | YES    |
    | have_raid  | YES    |
    | have_symlink      | YES    |
    | have_openssl      | NO     |
    | have_query_cache | YES    |
    +------------------+-------+
    8 rows in set (0.05 sec)
    如果是這樣的,那么我們就可以創建一張支持事務處理的表來試試了。
    MYSQL的事務處理功能!
    一直以來我都以為MYSQL不支持事務處理,所以在處理多個數據表的數據時,一直都很麻煩(我是不得不將其寫入文本文件,在系統重新加載得時候才寫入數據庫以防出錯)~今天發現MYSQL數據庫從4.1就開始支持事務功能,據說5.0將引入存儲過程^_^
    先簡單介紹一下事務吧!事務是DBMS得執行單位。它由有限得數據庫操作序列組成得。但不是任意得數據庫操作序列都能成為事務。一般來說,事務是必須滿足4個條件(ACID)
    原子性(Autmic):事務在執行性,要做到“要么不做,要么全做!”,就是說不允許事務部分得執行。即使因為故障而使事務不能完成,在rollback時也要消除對數據庫得影響!
    一致性(Consistency):事務得操作應該使使數據庫從一個一致狀態轉變倒另一個一致得狀態!就拿網上購物來說吧,你只有即讓商品出庫,又讓商品進入顧客得購物籃才能構成事務!
    隔離性(Isolation):如果多個事務并發執行,應象各個事務獨立執行一樣!
    持久性(Durability):一個成功執行得事務對數據庫得作用是持久得,即使數據庫應故障出錯,也應該能夠恢復!
    MYSQL的事務處理主要有兩種方法。
    1、用begin,rollback,commit來實現
    begin 開始一個事務
    rollback 事務回滾
    commit  事務確認
    2、直接用set來改變mysql的自動提交模式
    MYSQL默認是自動提交的,也就是你提交一個QUERY,它就直接執行!我們可以通過
    set autocommit=0   禁止自動提交
    set autocommit=1 開啟自動提交
    來實現事務的處理。
    但注意當你用 set autocommit=0 的時候,你以后所有的SQL都將做為事務處理,直到你用commit確認或rollback結束,注意當你結束這個事務的同時也開啟了個新的事務!按第一種方法只將當前的作為一個事務!
    個人推薦使用第一種方法!
    MYSQL中只有INNODB和BDB類型的數據表才能支持事務處理!其他的類型是不支持的?。ㄇ杏洠。?BR>MYSQL5.0 WINXP下測試通過~ 
    mysql> use test;
    Database changed
    mysql> CREATE TABLE `dbtest`(
    -> id int(4)
    -> ) TYPE=INNODB;
    Query OK, 0 rows affected, 1 warning (0.05 sec)
    mysql> select * from dbtest
    -> ;
    Empty set (0.01 sec)
    mysql> begin;
    Query OK, 0 rows affected (0.00 sec)
    mysql> insert into dbtest value(5);
    Query OK, 1 row affected (0.00 sec)
    mysql> insert into dbtest value(6);
    Query OK, 1 row affected (0.00 sec)
    mysql> commit;
    Query OK, 0 rows affected (0.00 sec)
    mysql> select * from dbtest;
    +------+
    | id    |
    +------+
    |     5 |
    |     6 |
    +------+
    2 rows in set (0.00 sec)
    mysql> begin;
    Query OK, 0 rows affected (0.00 sec)
    mysql> insert into dbtest values(7);
    Query OK, 1 row affected (0.00 sec)
    mysql> rollback;
    Query OK, 0 rows affected (0.00 sec)
    mysql> select * from dbtest;

    +------+
    | id    |
    +------+
    |     5 |
    |     6 |
    +------+
    2 rows in set (0.00 sec)
    mysql>
    *******************************************************************************************************************
    代碼如下:
    function Tran( $sql ) {
    $judge = 1;
    mysql_query('begin');
    foreach ($sql as $v) {
    if ( !mysql_query($v) ) {
    $judge = 0;
    }
    }
    if ($judge == 0) {
    mysql_query('rollback');
    return false;
    }
    elseif ($judge == 1) {
    mysql_query('commit');
    return true;
    }
    }

    ************************************************
    代碼如下:
    <?php
    $handler=mysql_connect("localhost","root","");
    mysql_select_db("task");
    mysql_query("SET AUTOCOMMIT=0");//設置為不自動提交,因為MYSQL默認立即執行
    mysql_query("BEGIN");//開始事務定義
    if(!mysql_query("insert into trans (id) values('2')"))
    {
    mysql_query("ROOLBACK");//判斷當執行失敗時回滾
    }
    if(!mysql_query("insert into trans (id) values('4')"))
    {
    mysql_query("ROOLBACK");//判斷執行失敗回滾
    }
    mysql_query("COMMIT");//執行事務
    mysql_close($handler);
    ?>

    您可能感興趣的文章:

  • mysql 鎖表鎖行語句分享(MySQL事務處理)
  • 解析php mysql 事務處理回滾操作(附實例)
  • 為mysql數據庫添加添加事務處理的方法
  • php實現mysql事務處理的方法
  • mysql 事務處理及表鎖定深入簡析
  • php下pdo的mysql事務處理用法實例
  • PHP+Mysql基于事務處理實現轉賬功能的方法
  • Mysql事務處理詳解
  • 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    MySQL事務處理與應用簡析

    MySQL事務處理與應用簡析:事務處理在各種管理系統中都有著廣泛的應用,比如人員管理系統,很多同步數據庫操作大都需要用到事務處理。比如說,在人員管理系統中,你刪除一個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數據庫操作語句
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产精品一区12p| 日韩福利视频精品专区| 欧美精品黑人粗大视频| 国产在线精品网址你懂的| 中文字幕精品亚洲无线码一区| 精品国产乱码久久久久久浪潮| 免费精品99久久国产综合精品| 囯产精品一品二区三区| 亚洲Av无码精品色午夜| 日本精品视频在线观看| 国产精品美女WWW爽爽爽视频| 国产精品视频一区二区三区| 国产欧美亚洲精品A| 午夜精品久久久久久毛片| 亚洲av午夜国产精品无码中文字| 黄床大片免费30分钟国产精品 | 国产精品免费网站| 久久精品人人做人人爽电影蜜月 | 久久国产精品成人片免费| 伊人久久精品无码av一区| 日韩欧美一区二区三区中文精品| 精品一区二区三区在线观看| 精品欧美一区二区三区久久久| 国产精品成人99久久久久91gav| 91麻豆精品一二三区在线| 在线欧美v日韩v国产精品v| 欧美精品在线一区| 欧美视频精品一区二区三区| 亚洲国语精品自产拍在线观看| 亚洲色图国产精品| 国产成人精品免费视频大全| 永久免费精品视频| 国产69精品久久久久99尤物| 国产精品免费视频观看拍拍| 久久er国产精品免费观看8| 欧美成人精品第一区二区 | 欧美在线精品一区二区三区| 网友偷拍日韩精品| 一本一道精品欧美中文字幕| 久久精品中文闷骚内射| HEYZO无码综合国产精品|