autocommit和start transaction

在存储过程中使用事务时,通常会显示设置事务自动提交为0 (set autocommit=0;)这里极有可能是个坑,在同一个连接中,事务执行完或存储过程执行完后,autocommit仍为0,如果后面没有commit语句则可能导致数据丢失;对应mysql官网,没有解释很清楚 set autocommit =0 和 start transaction,是否必须结合使用,但有一句是,start transaction 有隐含的 设置autocommit为0 作用,原句为: To disable autocommit mode implicitly for a single series of statements, use the START TRANSACTION statement ,所以可以去掉set autocommit=0 ,如果非得使用时在commit和rollback 后,将 autocommit设置为1

时间: 2024-11-16 02:29:21

autocommit和start transaction的相关文章

jdbc-Spring + Hibernate Could not toggle autocommit

问题描述 Spring + Hibernate Could not toggle autocommit org.hibernate.transaction.JDBCTransaction Could not toggle autocommit java.sql.SQLException: Closed Connection org.hibernate.transaction.JDBCTransaction JDBC commit failed java.sql.SQLException: Io

START TRANSACTION, COMMIT和ROLLBACK语法

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}start transaction或begin语句可以开始一项新的事务.commit可以提交当前事务,是变更成为永久变更.roll

MySQL分库分表的实现过程详解介绍

MySQL分库分表基础表介绍 表基本模型结构 这里我们模拟一个商城的基本的表结.此结构由(用户.门店.导购.门店商品.订单.订单对应的商品).其中,导购也是一个用户,门店是只属于一个店主的,同时店主本身也是一个导购也是一个普通用户. 结构图:   构造数据脚本 MySQL分库分表(1)-脚本 对业务场景进行模拟 场景1:购买者下订单. 1.从session中获得客户ID. 2.可以通过时间戳等拼凑一个订单ID(在创建表的时候为了方便我用自增的,在以下我们一直就吧订单ID看成不是自增的,是用程序生

mysql第三天 事务

ACID A : 原子性 要么全提交成功,要么全失败回滚 C:一致性 是从一个一致性状态到另外一个一致性状态. 意思就是说能量守恒. 还有的人理解其是外键的定义,即对于有班级的学生,不能创建一个不指定班级的学生 还有人认为一致性和原子性共同满足了全好全坏的限定. 我认为在分布式数据库中这个概念才更有意义,如何做到多几点的一致性 I:隔离性 跟隔离级别相关,通常来说,事物看不到其他未提交的事务的状态 D:持久性 事务一旦提交,所做的修改就是永久保存的 隔离级别 先看一下事务并发操作可能遇到的问题:

Phoenix通过sql语句更新操作hbase

hbase 提供很方便的shell脚本,可以对数据表进行 CURD 操作,但是毕竟是有一定的学习成本的,基本上对于开发来讲,sql 语句都是看家本领,那么,有没有一种方法可以把 sql 语句转换成 hbase的原生API呢? 这样就可以通过普通平常的 sql 来对hbase 进行数据的管理,使用成本大大降低.Apache Phoenix 组件就完成了这种需求,官方注解为 "Phoenix - we put the SQL back in NoSql",通过官方说明,Phoenix 的性

《MySQL 深入浅出》 1-17章节 阅读整理

链接:http://blog.itpub.net/28602568/viewspace-1622174/ 标题: <MySQL 深入浅出> 1-17章节 阅读整理  作者:lōττéry版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.] **  以下提到oracle部分只是对比扩展,本文重点是 <MySQL 深入浅出>书中1-17章节 个人觉得需要提笔一记的知识点整理. **  该书讲解  VERSION() ==>'5.0.18-nt' ,默认引擎 :

2&gt;存储过程的事务

MySQL存储过程之事务管理  ACID:Atomic.Consistent.Isolated.Durable  存储程序提供了一个绝佳的机制来定义.封装和管理事务.  1,MySQL的事务支持  MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关: Java代码   MyISAM:不支持事务,用于只读程序提高性能   InnoDB:支持ACID事务.行级锁.并发   Berkeley DB:支持事务   隔离级别:  隔离级别决定了一个session中的事务可能对另一个se

php mysql事务详解

事务(Transaction)及其ACID属性事务是由一组SQ语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性.原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行.一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态.这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性:事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的.隔离性(Isoation):数据库系统提供一

mysql 中支持嵌套事务么?

问题描述 使用命令是不报错的,但是最外层的事务rollback了,发现在数据库中还是会多两条数据,这是为什么?set autocommit=0;start TRANSACTION ;insert into person (firstName,lastName) VALUES ('tr1','tr2'); START transaction ; insert into person (firstName,lastName) VALUES ('tr1','tr2'); commit;ROLLBACK