最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL事務(wù)處理與應(yīng)用簡(jiǎn)析

 更新時(shí)間:2014年06月11日 16:11:47   投稿:shichen2014  
事務(wù)處理在各種管理系統(tǒng)中都有著廣泛的應(yīng)用,比如人員管理系統(tǒng),很多同步數(shù)據(jù)庫(kù)操作大都需要用到事務(wù)處理。這篇文章主要介紹了MySQL事務(wù)處理,需要的朋友可以參考下

事務(wù)處理在各種管理系統(tǒng)中都有著廣泛的應(yīng)用,比如人員管理系統(tǒng),很多同步數(shù)據(jù)庫(kù)操作大都需要用到事務(wù)處理。比如說(shuō),在人員管理系統(tǒng)中,你刪除一個(gè)人員,你即需要?jiǎng)h除人員的基本資料,也要?jiǎng)h除和該人員相關(guān)的信息,如信箱,文章等等,這樣,這些數(shù)據(jù)庫(kù)操作語(yǔ)句就構(gòu)成一個(gè)事務(wù)!
刪除的SQL語(yǔ)句
delete from userinfo where ~~~
delete from mail where ~~
delete from article where~~
~~
如果沒(méi)有事務(wù)處理,在你刪除的過(guò)程中,假設(shè)出錯(cuò)了,只執(zhí)行了第一句,那么其后果是難以想象的!
但用事務(wù)處理。如果刪除出錯(cuò),你只要rollback就可以取消刪除操作(其實(shí)是只要你沒(méi)有commit你就沒(méi)有確實(shí)的執(zhí)行該刪除操作)
一般來(lái)說(shuō),在商務(wù)級(jí)的應(yīng)用中,都必須考慮事務(wù)處理的!
查看inodb信息
shell> /usr/local/mysql -u root -p
mysql> show variables like "have_%"
系統(tǒng)會(huì)提示:
+------------------+-------+
| 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)
如果是這樣的,那么我們就可以創(chuàng)建一張支持事務(wù)處理的表來(lái)試試了。
MYSQL的事務(wù)處理功能!
一直以來(lái)我都以為MYSQL不支持事務(wù)處理,所以在處理多個(gè)數(shù)據(jù)表的數(shù)據(jù)時(shí),一直都很麻煩(我是不得不將其寫(xiě)入文本文件,在系統(tǒng)重新加載得時(shí)候才寫(xiě)入數(shù)據(jù)庫(kù)以防出錯(cuò))~今天發(fā)現(xiàn)MYSQL數(shù)據(jù)庫(kù)從4.1就開(kāi)始支持事務(wù)功能,據(jù)說(shuō)5.0將引入存儲(chǔ)過(guò)程^_^
先簡(jiǎn)單介紹一下事務(wù)吧!事務(wù)是DBMS得執(zhí)行單位。它由有限得數(shù)據(jù)庫(kù)操作序列組成得。但不是任意得數(shù)據(jù)庫(kù)操作序列都能成為事務(wù)。一般來(lái)說(shuō),事務(wù)是必須滿足4個(gè)條件(ACID)
原子性(Autmic):事務(wù)在執(zhí)行性,要做到“要么不做,要么全做!”,就是說(shuō)不允許事務(wù)部分得執(zhí)行。即使因?yàn)楣收隙故聞?wù)不能完成,在rollback時(shí)也要消除對(duì)數(shù)據(jù)庫(kù)得影響!
一致性(Consistency):事務(wù)得操作應(yīng)該使使數(shù)據(jù)庫(kù)從一個(gè)一致?tīng)顟B(tài)轉(zhuǎn)變倒另一個(gè)一致得狀態(tài)!就拿網(wǎng)上購(gòu)物來(lái)說(shuō)吧,你只有即讓商品出庫(kù),又讓商品進(jìn)入顧客得購(gòu)物籃才能構(gòu)成事務(wù)!
隔離性(Isolation):如果多個(gè)事務(wù)并發(fā)執(zhí)行,應(yīng)象各個(gè)事務(wù)獨(dú)立執(zhí)行一樣!
持久性(Durability):一個(gè)成功執(zhí)行得事務(wù)對(duì)數(shù)據(jù)庫(kù)得作用是持久得,即使數(shù)據(jù)庫(kù)應(yīng)故障出錯(cuò),也應(yīng)該能夠恢復(fù)!
MYSQL的事務(wù)處理主要有兩種方法。
1、用begin,rollback,commit來(lái)實(shí)現(xiàn)
begin 開(kāi)始一個(gè)事務(wù)
rollback 事務(wù)回滾
commit  事務(wù)確認(rèn)
2、直接用set來(lái)改變mysql的自動(dòng)提交模式
MYSQL默認(rèn)是自動(dòng)提交的,也就是你提交一個(gè)QUERY,它就直接執(zhí)行!我們可以通過(guò)
set autocommit=0   禁止自動(dòng)提交
set autocommit=1 開(kāi)啟自動(dòng)提交
來(lái)實(shí)現(xiàn)事務(wù)的處理。
但注意當(dāng)你用 set autocommit=0 的時(shí)候,你以后所有的SQL都將做為事務(wù)處理,直到你用commit確認(rèn)或rollback結(jié)束,注意當(dāng)你結(jié)束這個(gè)事務(wù)的同時(shí)也開(kāi)啟了個(gè)新的事務(wù)!按第一種方法只將當(dāng)前的作為一個(gè)事務(wù)!
個(gè)人推薦使用第一種方法!
MYSQL中只有INNODB和BDB類型的數(shù)據(jù)表才能支持事務(wù)處理!其他的類型是不支持的?。ㄇ杏洠。?BR>MYSQL5.0 WINXP下測(cè)試通過(guò)~ 
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>
*******************************************************************************************************************

復(fù)制代碼 代碼如下:

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;
}
}

************************************************
復(fù)制代碼 代碼如下:

<?php
$handler=mysql_connect("localhost","root","");
mysql_select_db("task");
mysql_query("SET AUTOCOMMIT=0");//設(shè)置為不自動(dòng)提交,因?yàn)镸YSQL默認(rèn)立即執(zhí)行
mysql_query("BEGIN");//開(kāi)始事務(wù)定義
if(!mysql_query("insert into trans (id) values('2')"))
{
mysql_query("ROOLBACK");//判斷當(dāng)執(zhí)行失敗時(shí)回滾
}
if(!mysql_query("insert into trans (id) values('4')"))
{
mysql_query("ROOLBACK");//判斷執(zhí)行失敗回滾
}
mysql_query("COMMIT");//執(zhí)行事務(wù)
mysql_close($handler);
?>

相關(guān)文章

  • Navicat操作MYSQL的詳細(xì)過(guò)程

    Navicat操作MYSQL的詳細(xì)過(guò)程

    這篇文章主要介紹了Navicat操作MYSQL的詳細(xì)過(guò)程,包括數(shù)據(jù)表的操作修改刪除操作,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • mysql基礎(chǔ)架構(gòu)教程之查詢語(yǔ)句執(zhí)行的流程詳解

    mysql基礎(chǔ)架構(gòu)教程之查詢語(yǔ)句執(zhí)行的流程詳解

    這篇文章主要給大家介紹了關(guān)于mysql基礎(chǔ)架構(gòu)教程之查詢語(yǔ)句執(zhí)行流程的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧
    2018-11-11
  • mysql 連接出現(xiàn)Public Key Retrieval is not allowed的問(wèn)題解決

    mysql 連接出現(xiàn)Public Key Retrieval is n

    在MySQL連接中出現(xiàn)“Public Key Retrieval is not allowed”錯(cuò)誤,通常是因?yàn)樵谑褂冒踩捉幼謱樱⊿SL)連接時(shí)遇到了問(wèn)題,本文就來(lái)介紹一下解決方法,感興趣的可以了解一下
    2024-03-03
  • phpmyadmin出現(xiàn)#2003服務(wù)器無(wú)響應(yīng)解決方法小結(jié)

    phpmyadmin出現(xiàn)#2003服務(wù)器無(wú)響應(yīng)解決方法小結(jié)

    出現(xiàn)登陸phpmyadmin出現(xiàn) #2003 - 服務(wù)器沒(méi)有響應(yīng)最先想到的是你的mysql服務(wù)器是不是停止了檢查一下,如果是mysql服務(wù)器停止服務(wù)了重啟就可以解決問(wèn)題了
    2012-04-04
  • 超簡(jiǎn)單的qps統(tǒng)計(jì)方法(推薦)

    超簡(jiǎn)單的qps統(tǒng)計(jì)方法(推薦)

    下面小編就為大家?guī)?lái)一篇超簡(jiǎn)單的qps統(tǒng)計(jì)方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • MySQL 的模塊不能安裝的解決方法

    MySQL 的模塊不能安裝的解決方法

    這篇文章主要介紹了MySQL 的模塊不能安裝的解決方法的相關(guān)資料,需要的朋友可以參考下
    2015-07-07
  • MySQL總是差八個(gè)小時(shí)該如何解決

    MySQL總是差八個(gè)小時(shí)該如何解決

    最近在用mybatis時(shí)發(fā)現(xiàn),將LocalDateTime插入到數(shù)據(jù)庫(kù)時(shí)時(shí)間少了8小時(shí),下面這篇文章主要給大家介紹了關(guān)于MySQL總是差八個(gè)小時(shí)該如何解決的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • MySQL免安裝版(zip)安裝配置詳細(xì)教程

    MySQL免安裝版(zip)安裝配置詳細(xì)教程

    這篇文章主要為大家詳細(xì)介紹了MySQL免安裝版(zip)安裝配置詳細(xì)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • mysql函數(shù)IFNULL使用的及注意事項(xiàng)說(shuō)明

    mysql函數(shù)IFNULL使用的及注意事項(xiàng)說(shuō)明

    這篇文章主要介紹了mysql函數(shù)IFNULL使用的及注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • mysql增刪改查基礎(chǔ)語(yǔ)句

    mysql增刪改查基礎(chǔ)語(yǔ)句

    這篇文章主要介紹了mysql增刪改查基礎(chǔ)語(yǔ)句,需要的朋友可以參考下
    2017-10-10

最新評(píng)論

老河口市| 香港| 昌邑市| 临海市| 平利县| 应城市| 江西省| 东辽县| 皮山县| 麦盖提县| 久治县| 惠州市| 黄山市| 黄山市| 崇左市| 阆中市| 子长县| 韩城市| 措美县| 甘肃省| 石泉县| 子洲县| 印江| 木里| 清河县| 鹰潭市| 崇礼县| 阿拉善右旗| 高清| 临漳县| 崇信县| 乌兰县| 揭阳市| 孟州市| 玉龙| 南乐县| 家居| 桑植县| 徐州市| 西吉县| 嘉定区|