MySql(24)------mysql事务控制
2016-09-06 09:52
162 查看
一 MySql事务控制概要
MySql通过SET AUTOCOMMIT, START TRANSACTION, COMMIT 和 ROLLBACK等等语句对事务进行控制。
语法:
START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO]RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO]RELEASE]
SET AUTOCOMMIT={0 | 1}
在MySql中,默认的事务是自动提交的,如果想要事务不自动提交,需要明确的做事务控制。关于语法的分析:
(1)
START TRANSACTION 或 BEGIN开始一项事务。
(2)
COMMIT提交事务,ROLLBACK回滚事务。
(3)
CHAIN和RELEASE用于定义在事务提交或回滚后的操作,CHAIN会开始一个新的事务,与刚才的事务完全处于隔离,
而RELEASE则表示事物提交或回滚后断开与客户端的连接。
(4)
SET AUTOCOMMIT修改当前连接的方式,0代表需要手动提交事务,需要使用明确的命令提交事务,1代表自动提交事务。
二 实例准备条件
建表:
三 实例分析
接口
eg1,事务的开始,执行,和提交:
eg2,事务的开始,执行,提交的同时使用chain打开一个新的事务,然后再执行,最后提交。
eg3,start transaction事务的开始,会造成一个隐含的unlock tables,释放表的锁。
一个事务中,尽可能不使用不同存储引擎的表,否则需要对非事务类型的表
进行单独的处理。因为commit,rollback只针对事务类型的表进行回滚。
eg4,保存点使用(savepoint):
对于事务的控制,可以通过保存点(savepoint)指定事务回滚到哪个部分,对于复杂的应用,可以通过多个保存点配合完成事务回滚的位置。
如果你定义了两个名字相同的保存点,后来的定义会覆盖先前的定义,也就是说,只能回滚到最新定义的保存点位置。对于不需要的保存点,
通过realse删除保存点,删除保存点后就不能通过回滚到删除的这个保存点,因为删除,不存在了,所以回滚不到。
特别注意:
保存点只针对事务手动提交有效,如果事务是自动提交的,保存点将随每一次的数据库操作而消失。
一旦事务提交,保存点将消失。
MySql通过SET AUTOCOMMIT, START TRANSACTION, COMMIT 和 ROLLBACK等等语句对事务进行控制。
语法:
START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO]RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO]RELEASE]
SET AUTOCOMMIT={0 | 1}
在MySql中,默认的事务是自动提交的,如果想要事务不自动提交,需要明确的做事务控制。关于语法的分析:
(1)
START TRANSACTION 或 BEGIN开始一项事务。
(2)
COMMIT提交事务,ROLLBACK回滚事务。
(3)
CHAIN和RELEASE用于定义在事务提交或回滚后的操作,CHAIN会开始一个新的事务,与刚才的事务完全处于隔离,
而RELEASE则表示事物提交或回滚后断开与客户端的连接。
(4)
SET AUTOCOMMIT修改当前连接的方式,0代表需要手动提交事务,需要使用明确的命令提交事务,1代表自动提交事务。
二 实例准备条件
建表:
CREATE TABLE `t_user_main` ( `f_userId` int(10) NOT NULL AUTO_INCREMENT COMMENT '用户id,作为主键', `f_userName` varchar(100) DEFAULT NULL, `f_age` int(3) DEFAULT NULL COMMENT '年龄', PRIMARY KEY (`f_userId`), KEY `userName_index` (`f_userName`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
三 实例分析
接口
eg1,事务的开始,执行,和提交:
eg2,事务的开始,执行,提交的同时使用chain打开一个新的事务,然后再执行,最后提交。
eg3,start transaction事务的开始,会造成一个隐含的unlock tables,释放表的锁。
一个事务中,尽可能不使用不同存储引擎的表,否则需要对非事务类型的表
进行单独的处理。因为commit,rollback只针对事务类型的表进行回滚。
eg4,保存点使用(savepoint):
对于事务的控制,可以通过保存点(savepoint)指定事务回滚到哪个部分,对于复杂的应用,可以通过多个保存点配合完成事务回滚的位置。
如果你定义了两个名字相同的保存点,后来的定义会覆盖先前的定义,也就是说,只能回滚到最新定义的保存点位置。对于不需要的保存点,
通过realse删除保存点,删除保存点后就不能通过回滚到删除的这个保存点,因为删除,不存在了,所以回滚不到。
特别注意:
保存点只针对事务手动提交有效,如果事务是自动提交的,保存点将随每一次的数据库操作而消失。
一旦事务提交,保存点将消失。
相关文章推荐
- MySQL事务控制语句(学习笔记)
- php 在 控制 mysql 事务中的方法
- php中对MYSQL操作之事务控制,回滚
- [置顶] 深入理解Mysql——锁、事务与并发控制
- MySQL(24):事务的隔离级别
- php 在 控制 mysql 事务中的方法
- 关于mysql的事务的控制实验
- mysql触发器和事务控制
- SQL事务的四种隔离级别和MySQL多版本并发控制
- MySQL事务控制语句
- MySQL之事务编程(二)事务控制语句
- mysql 事务控制
- mysql之控制台下的事务控制
- Mysql 命令行控制事务
- MySQL事务控制语句
- mysql锁机制和事务控制
- php中对MYSQL操作之事务控制,回滚
- php+mysqli事务控制实现银行转账实例
- mysql 事务控制
- MySQL中的事务控制的介绍