php-14

来源:互联网 发布:三星网络光端机 编辑:程序博客网 时间:2024/05/22 12:55
MySQL 事务
   MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在新闻系统中,你删除一个分类,也要删除和该分类相关的信息,如新闻,评论等等,如果其中一个语句出错,那么数据就不完整了,这些数据库操作语句就看成一个整体,必须全部成功,这样就构成一个事务!

1、在MySQL中只有使用了Innodb数据库引擎的数据表才支持事务

2、事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行

3、事务用来管理insert,update,delete语句

一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)

1、事务的原子性:一组事务,要么成功;要么撤回。
2、稳定性:有非法数据,事务撤回。
3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。但可靠性和高速度不可兼得。

开启事务关键字

 begin 
   
#数据库操作语句...

如果有一条操作语句失败,撤回之前的数据库操作
ROLLBACK 

sql操作都成功,提交事务,保存数据
COMMIT  

案例:创建test数据库,user表(id,username),表类型InnoDB,编码utf8

<?php

 $handler = @mysql_connect("localhost", "root", "");
 mysql_select_db("test");
 mysql_query("SET AUTOCOMMIT=0"); //设置为不自动提交,因为MYSQL默认立即执行

 mysql_query("BEGIN"); //开始事务定义

 if (!mysql_query("insert into user (username) values('zhangsan')")) {
    mysql_query("ROLLBACK"); //判断当执行失败时回滚
    echo 1;
 }
 if (!mysql_query("insert into user (username) values('lisi')")) {
    mysql_query("ROLLBACK"); //判断执行失败回滚
    echo 2;
 }
 mysql_query("COMMIT"); //执行事务
 echo 3; 
 mysql_close($handler);
?>
原创粉丝点击