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

时间: 2024-08-06 16:06:17

mysql 事务处理的相关文章

mysql事务处理用法与实例详解

MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID事务.行级锁.并发 3.Berkeley DB:支持事务 一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行.换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的.如果在事务的任何操作失败,则整个事务将失败. 实际上,会俱乐部许多SQL查询到一个组中,将执行所有的人都一起作为事务的一部分. 事务的特性: 事务有以下四

PHP与MYSQL事务处理

PHP与MYSQL事务处理 2016-03-28 fal PHP编程 MYSQL的事务处理主要有两种方法. 1.用begin,rollback,commit来实现 begin 开始一个事务 rollback 事务回滚 commit 事务确认 2.直接用set来改变mysql的自动提交模式 MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过 set autocommit=0 禁止自动提交 set autocommit=1 开启自动提交 来实现事务的处理. 当你用 s

mysql事务处理的意义

MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID事务.行级锁.并发 3.Berkeley DB:支持事务  一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行.换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的.如果在事务的任何操作失败,则整个事务将失败.实际上,会俱乐部许多SQL查询到一个组中,将执行所有的人都一起作为事务的一部分. 事务的特性: 事务有以下

[转]mysql事务处理用法与实例详解

转自:http://www.cnblogs.com/ymy124/p/3718439.html MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID事务.行级锁.并发 3.Berkeley DB:支持事务 一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行.换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的.如果在事务的任何操作失败,则整个事务将失败. 实际上,会俱

MySQL事务处理实现方法步骤

需求说明: 案例背景:银行的转账过程中,发生意外是在所难免.为了避免意外而造成不必要的损失,使用事务处理的方式进行处理: A账户现有余额1000元,向余额为200的B账户进行转账500元.可能由于某原因: A账户在扣除转账金额时发生错误,使用事务回滚来返回到初始状态 A账户成功扣除转账金额后,B账户添加转账金额发生错误,使用事务回滚到初始状态 提示:先建数据表account,字段包括姓名(username).余额(money),再分别利用事务处理以上两种情况. [sql] view plain 

mysql事务处理失效原因

最近项目中使用mysql数据库时出现一个问题,运用spring的事务注解(@transaction)来管理事务时,发现用事务注解@transaction标记的方法里,如果出现异常,事务并没有回滚,而是直接提交到了数据库,刚开始还以为是spring的事务配置有问题,检查一遍后还是不行,最后查阅了很多资料才发现原来是mysql数据库存储引擎的问题. mysql有多种存储引擎,有些版本(mysql5.5.5以前默认是MyISAM,mysql5.5.5以后默认是InnoDB)安装时默认的存储引擎是MyI

MySQL事务处理2

MySQL5.X 都已经发布好久了,但是还有很多人认为MySQL是不支持事务处理的,这不得不怪他们是孤陋寡闻的,其实,只要你的MySQL版本支持BDB或 InnoDB表类型,那么你的MySQL就具有事务处理的能力.这里面,又以InnoDB表类型用的最多,虽然后来发生了诸如Oracle收购 InnoDB等令MySQL不爽的事情,但那些商业上的斗争与技术无关,下面以InnoDB表类型为例简单说一下MySQL中的事务. 先来明确一下事务涉及的相关知识: 事务都应该具备ACID特征.所谓ACID是Ato

php mysql 事务处理

MYSQL 的事务处理主要有两种方法. 1 .用 begin,rollback,commit 来实现 begin 开始一个事务 rollback 事务回滚 commit 事务确认    2 .直接用 set 来改变 mysql 的自动提交模式 MYSQL 默认是自动提交的,也就是你提交一个 QUERY ,它就直接执行!我们可以通过 set autocommit=0 禁止自动提交 set autocommit=1 开启自动提交 来实现事务的处理. 当你用 set autocommit=0 的时候,

MYSQL 事务处理常见有两种方法

MYSQL在操作大量的数据或者比较重要的数据的时候,事务处理很重要,比如银行的转账,支付,等等,作为开发人员事务是必须的一步. 1.用 BEGIN, ROLLBACK, COMMIT来实现 BEGIN 开始一个事务ROLLBACK 事务回滚COMMIT 事务确认 2.直接用 SET 来改变 MySQL 的自动提交模式: SET AUTOCOMMIT=0 禁止自动提交SET AUTOCOMMIT=1 开启自动提交 注意的是,在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事