您的位置:首页 > 数据库 > MySQL

MYSQL的事务处理功能

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

删除的SQL语句

delete from userinfo where ~~~

delete from mail where ~~

delete from article where~~

~~

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

但用事务处理。如果删除出错,你只要rollback就可以取消删除操作(其实是只要你没有commit你就没有确实的执行该删除操作)

一般来说,在商务级的应用中,都必须考虑事务处理的!

mysql事务处理的意义
事务处理机制在程序开发过程中有着非常重要的作用,它可以使整个系统更加安全,例如在银行处理转账业务时,如果A账户中的金额刚被发出,而B账户还没来得及接收就发生停电,这会给银行和个人带来很大的经济损失。采用事务处理机制,一旦在转账过程中发生意外,则程序将回滚,不做任何处理。

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类型的数据表才支持事务处理,其他的类型是不支持的!

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 values(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的事务处理