mysql 事务处理

知识点:

事务处理是什么?

当数据库表呈树状机构设计时,我们对一个表进行增、删、改的操作,可能会要求对另外的表进行相同的操作,为了保证这多个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 

posted @ 2017-06-14 22:58  程昱仲德  阅读(271)  评论(0编辑  收藏  举报