首页 数据库 mysql教程 MYSQL--事务处理_MySQL

MYSQL--事务处理_MySQL

Jun 01, 2016 pm 01:35 PM
人员管理 数据库操作 管理系统

bitsCN.com

MYSQL--事务处理

 

事务处理在各种管理系统中都有着广泛的应用,比如人员管理系统,很多同步数据库操作大都需要用到事务处理。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!  www.bitsCN.com  

     删除的SQL语句

delete from userinfo where ~~~

delete from mail where ~~

delete from article where~~

~~  www.bitsCN.com  

   如果没有事务处理,在你删除的过程中,假设出错了,只执行了第一句,那么其后果是难以想象的!

但用事务处理。如果删除出错,你只要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的事务处理功能!

 

作者:Feifengxlq   Email:feifengxlq@sohu.com

一直以来我都以为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类型的数据表才能支持事务处理!

其他的类型是不支持的!(切记!)

 

下次有空说下MYSQL的数据表的锁定和解锁!

 

       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>

 

*************************************************

 

[PHP]

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

?>

bitsCN.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何通过PHP编写一个简单的在线借阅管理系统 如何通过PHP编写一个简单的在线借阅管理系统 Sep 27, 2023 pm 12:49 PM

如何通过PHP编写一个简单的在线借阅管理系统,需要具体代码示例引言:随着数字化时代的到来,图书馆管理方式也发生了巨大的变化。传统的手工记录系统逐渐被在线借阅管理系统所取代。在线借阅管理系统通过自动化处理借阅和归还图书的流程,大大提高了效率。本文将介绍如何使用PHP编写一个简单的在线借阅管理系统,并提供具体的代码示例。一、系统需求分析在开始编写在线借阅管理系统

基于Go语言的智慧物业管理系统实践 基于Go语言的智慧物业管理系统实践 Jun 20, 2023 am 09:14 AM

随着科技进步和社会发展,智慧物业管理系统成为了现代城市发展不可或缺的一环。在这个过程中,基于Go语言的智慧物业管理系统在其高效、可靠、快速等优势方面备受关注。本文将介绍我们团队使用Go语言的智慧物业管理系统的实践情况。1.需求分析我们的团队主要是为一家房地产公司进行开发这个物业管理系统。其主要任务是将物业公司和居民联系起来,方便物业管理公司的管理,同时也让居

php如何使用CodeIgniter4框架? php如何使用CodeIgniter4框架? May 31, 2023 pm 02:51 PM

PHP是一种非常流行的编程语言,而CodeIgniter4是一种常用的PHP框架。在开发Web应用程序时,使用框架是非常有帮助的,它可以加速开发过程、提高代码质量、降低维护成本。本文将介绍如何使用CodeIgniter4框架。安装CodeIgniter4框架CodeIgniter4框架可以从官方网站(https://codeigniter.com/)下载。下

如何使用PHP脚本在Linux环境下进行数据库操作 如何使用PHP脚本在Linux环境下进行数据库操作 Oct 05, 2023 pm 03:48 PM

如何使用PHP在Linux环境下进行数据库操作在现代web应用程序中,数据库是必不可少的组成部分。PHP是一种流行的服务器端脚本语言,它可以与各种数据库进行交互。本文将介绍如何在Linux环境下使用PHP脚本进行数据库操作,并提供一些具体的代码示例。步骤1:安装必要的软件和依赖项在开始之前,我们需要确保在Linux环境下安装了PHP和相关的依赖项。通常情况下

如何使用宝塔面板进行MySQL管理 如何使用宝塔面板进行MySQL管理 Jun 21, 2023 am 09:44 AM

宝塔面板是一种功能强大的面板软件,它可以帮助我们快速部署、管理和监控服务器,尤其是经常需要进行网站搭建、数据库管理以及服务器维护的小型企业或个人用户。在这些任务中,MySQL数据库管理在很多情况下是一个重要的工作。那么如何使用宝塔面板进行MySQL管理呢?接下来,我们将逐步介绍。第一步:安装宝塔面板在开始使用宝塔面板进行MySQL管理之前,首先需要安装宝塔面

如何使用MongoDB开发一个简单的网站后台管理系统 如何使用MongoDB开发一个简单的网站后台管理系统 Sep 20, 2023 am 08:34 AM

如何使用MongoDB开发一个简单的网站后台管理系统随着互联网的发展,网站的使用和管理变得越来越重要。为了方便网站的管理者对网站内容进行后台管理,开发一个简单而高效的网站后台管理系统是必不可少的。本文将介绍如何使用MongoDB来开发一个简单的网站后台管理系统,并通过具体的代码示例来演示。准备工作首先,我们需要确保已经安装并配置好了MongoDB数据库。具体

MySQL数据库管理系统的基本原理解析 MySQL数据库管理系统的基本原理解析 Mar 25, 2024 pm 12:42 PM

MySQL数据库管理系统的基本原理解析MySQL是一种常用的关系型数据库管理系统,它通过结构化查询语言(SQL)来进行数据存储和管理。本文将介绍MySQL数据库管理系统的基本原理,包括数据库的创建、数据表的设计、数据的增删改查等操作,并提供具体的代码示例。一、数据库的创建在MySQL中,首先需要创建一个数据库实例来存储数据。通过以下代码可以创建一个名为"my

如何使用C++编写一个简单的学生宿舍管理系统? 如何使用C++编写一个简单的学生宿舍管理系统? Nov 03, 2023 am 08:07 AM

如何使用C++编写一个简单的学生宿舍管理系统?学生宿舍管理系统是一个可以方便管理学生宿舍信息的软件系统。使用C++编写一个简单的学生宿舍管理系统不仅可以锻炼编程技能,还可以提高对学生宿舍管理流程的理解和把握。本文将介绍如何使用C++编写一个简单的学生宿舍管理系统。首先,我们需要定义学生宿舍的基本信息,包括学生姓名、学号、性别、联系方式等。我们可以使用一个结构

See all articles