mysql定义处理程序实例_mysql事务处理 实例

mysql事务处理

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>

mysql事务处理php代码

实现事务的处理可以通过PHP预定义类mysqli的以下方 法实现。 autocommit(boolean):该方法用于限定查询结果是否自动提交,如果该方法的参数为true则自动提交,如果参数为 false则关闭自动提交。MySQL数据库默认为自动提交。 rollback():利用mysqli类中的该方法可以实现事务的回滚。 commit(): 利用该方法可以实现提交所有查询。 <?php include_once("conn.php"); $id=$_GET[id]; $conn->autocommit(false); if(!$conn->query("delete from tb_sco where id='".$id."'")) {   $conn->rollback(); } if(!$conn->query("delete from tb_stu where id='".$id."'")) {   $conn->rollback(); }   $conn->commit();   $conn->autocommit(true);   echo "ok" ?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值