MYSQL的事务处理功能!

转载 2006年06月12日 14:52:00

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

作者: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>

MYSQL的事务处理功能

事务处理在各种管理系统中都有着广泛的应用,比如人员管理系统,很多同步数据库操作大都需要用到事务处理。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如...
  • dodott
  • dodott
  • 2015年08月27日 15:31
  • 1282

MySQL的事务处理功能

一直以来我都以为MYSQL不支持事务处理,所以在处理多个数据表的数据时,一直都很麻烦(我是不得不将其写入文本文件,在系统重新加载得时候才写入数据库以防出错)~今天发现MYSQL数据库从4.1就开始支持...
  • weiqubo
  • weiqubo
  • 2013年06月24日 14:59
  • 1120

mysql事务处理用法与实例详解

  • 2017年08月30日 14:42
  • 11KB
  • 下载

Spring注解和非注解实现声明时事务处理功能

一、Spring注解和非注解实现事务处理功能     例1:使用注解实现事务处理 在Spring配置文件中配置事务管理类,并添加对注解配置的事务的支持 当容器开启时打开注解  --> 注入事务管理...

PHP对MYSQL数据库进行事务处理及表锁定

PHP对MYSQL数据库进行事务处理及表锁定 这不是什么新鲜的话题,重温一下又何妨。  MYSQL的事务处理主要有两种方法:  1、用begin,rollback,commit来...

MySQL事务处理介绍

MySQL事务处理(增删改查后只要没有commit,全可以回滚) *myisam引擎不支持事务,innodb(支持外键和事务)才支持事务 修改表引擎方法:alter table t1...

mysql 事务处理

存储引擎与事物 常用的表引擎 Myisam:批量插入速度快,不支持事务,锁表 InnoDB:批量插入相对较慢,支持事务,锁行 事务:指一组操作,要么都成功执行,要么都不执行---->原子性(Atomi...
  • eoluo
  • eoluo
  • 2017年02月28日 13:22
  • 100

MYSQL--事务处理

事务处理在各种管理系统中都有着广泛的应用,比如人员管理系统,很多同步数据库操作大都需要用到事务处理。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如...
  • zi_jun
  • zi_jun
  • 2012年10月17日 01:06
  • 486

sql学习笔记(24)----------MySQL的事务处理详解

MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID事务、行级锁、并发 3.Berkeley DB:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MYSQL的事务处理功能!
举报原因:
原因补充:

(最多只允许输入30个字)