码迷,mamicode.com
首页 > 数据库 > 详细

mysql 事务处理

时间:2017-06-14 23:29:51      阅读:368      评论:0      收藏:0      [点我收藏+]

标签:自动   href   bsp   root   sql   back   value   lte   err   

知识点:

事务处理是什么?

当数据库表呈树状机构设计时,我们对一个表进行增、删、改的操作,可能会要求对另外的表进行相同的操作,为了保证这多个sql能同时执行成功,就要使用mysql的事务处理。

注意:只有增删改的操作可以进行回滚,alter等操作不可行!

事务特性:

1、原子性:所有的sql执行操作必须全部成功,否则则回滚到处理前状态

2、一致性: 确保数据库正确地改变状态后,成功提交的事务。

3、隔离性: 使事务操作彼此独立的和透明的。

4、持久性: 确保提交的事务的结果或效果的系统出现故障的情况下仍然存在。

目前mysql支持的事务处理的有两种引擎,基本上大家都在使用innodb引擎,注意,所有进行sql操作事务处理的表都必须是innodb引擎。

关键词1:commit,当事务处理是成功的时候,进行事务处理sql的提交工作

关键词2:rollback,当其中有一个sql执行操作有误时,进行回滚,此操作将会将所有被操作的数据库表回滚到之前的状态。

关键词3:start trasaction, 开启事务功能

关键词4 :autocommit,自动提交,如果为0则关闭,如果为1则开启,所以使用时需要将它赋值为0(关闭),使用完后再赋值为1(重新开启),一般mysql默认是开启的

PHP执行事务处理代码:

 1 $con = mysql_connect(‘localhost‘,‘root‘,‘root‘);
 2 mysql_select_db("test",$con);
 3 mysql_query("set names utf8");
 4 mysql_query(‘START TRANSACTION‘) or die(mysql_error());//开启事务功能
 5 $sql1 = "insert into student (name,age)values(‘xiaoming‘,‘16‘)";
 6 $sql2 = "insert into score (sid,computer,english)values(2,90,98)";
 7 if(!mysql_query($sql1)){
 8     mysql_query("ROLLBACK");//sql执行失败则表数据回滚到之前的状态
 9     echo ‘1‘;
10 }
11 if(!mysql_query($sql2)){
12     mysql_query("ROLLBACK");//sql执行失败则表数据回滚到之前的状态
13     echo ‘2‘;
14 }
15 
16 mysql_query(‘COMMIT‘)or die(mysql_error());//执行事务

sql语句故意写错后,结果都不提交,事务处理是可行的

另:start transaction 等同于 set autocommit = 0 

mysql 事务处理

标签:自动   href   bsp   root   sql   back   value   lte   err   

原文地址:http://www.cnblogs.com/chengzhongde/p/7011457.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!