MySQL事务autocommit自动提交

MySQL默认操作模式就是autocommit自动提交模式。这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行。我们可以通过设置autocommit的值改变是否是自动提交autocommit模式。

通过以下命令可以查看当前autocommit模式

mysql> show variables like ‘autocommit‘;

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| autocommit    | ON    |

+---------------+-------+

1 row in set (0.04 sec)

从查询结果中,我们发现Value的值是ON,表示autocommit开启。我们可以通过以下SQL语句改变这个模式

1

mysql> set autocommit = 0;

值0和OFF都是一样的,当然,1也就表示ON。通过以上设置autocommit=0,则用户将一直处于某个事务中,直到执行一条commit提交或rollback语句才会结束当前事务重新开始一个新的事务。

举个例子:

张三给李四转账500元。那么在数据库中应该是以下操作:

1,先查询张三的账户余额是否足够

2,张三的账户上减去500元

3,李四的账户上加上500元

以上三个步骤就可以放在一个事务中执行提交,要么全部执行要么全部不执行,如果一切都OK就commit提交永久性更改数据;如果出错则rollback回滚到更改前的状态。利用事务处理就不会出现张三的钱少了李四的账户却没有增加500元或者张三的钱没有减去李四的账户却加了500元。

MySQL默认的存储引擎是MyISAM,MyISAM存储引擎不支持事务处理,所以改变autocommit没有什么作用。但不会报错,所以要使用事务处理的童鞋一定要确定你所操作的表示支持事务处理的,如InnoDB。如果不知道表的存储引擎可以通过查看建表语句查看建表的时候有没有指定事务类型的存储引擎,如果没有指定存储引擎默认则是MyISAM不支持事务的存储引擎。

当然,事务处理是为了保障表数据原子性、一致性、隔离性、持久性。这些都是要消耗系统资源的,要谨慎选择。

时间: 2024-11-07 20:33:28

MySQL事务autocommit自动提交的相关文章

MySQL学习笔记02 事务autocommit自动提交

MySQL默认操作模式就是autocommit自动提交模式.这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行.我们可以通过设置autocommit的值改变是否是自动提交autocommit模式.通过以下命令可以查看当前autocommit模式. mysql> show variables like 'autocommit'; +---------------+-------+ | Variable_name | Value | +---------------+----

事务与自动提交

事务与自动提交 现在通过 PDO 连接上了,在开始进行查询前,必须先理解 PDO 是如何管理事务的.事务支持四大特性(ACID):原子性(Atomicity).一致性(Consistency).隔离性(Isolation)以及持久性(Durability).通俗地讲,在一个事务中执行的任何操作,即使是分阶段执行的,也能保证安全地应用于数据库,并在提交时不会受到来自其他连接的干扰.事务操作也可以根据请求自动撤销(假设还没有提交),这使得在脚本中处理错误更加容易. 事务通常是通过把一批更改"积蓄&q

PHP PDO 事务与自动提交

现在通过 PDO 连接上了,在开始进行查询前,必须先理解 PDO 是如何管理事务的. 事务支持四大特性(ACID): 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 通俗地讲,在一个事务中执行的任何操作,即使是分阶段执行的,也能保证安全地应用于数据库,并在提交时不会受到来自其他连接的干扰. 事务操作也可以根据请求自动撤销(假设还没有提交),这使得在脚本中处理错误更加容易. 事务通常是通过把一批更改"积蓄"起来

spring hibernate 事务整合 使用测试类 事务不自动提交的问题!!!

使用JUnit 测试hibernate 事务管理的时候应注意 ,测试类完成是默认回滚的. 所以只能查询数据库却不能增删改数据库. 应该在测试类上面加上注解 @Rollback(false)  表似默认不回滚. package TestHibernate; import java.util.List; import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; import or

MySQL事务隔离级别初探

MySQL有四种隔离级别,分别是: READ UNCOMMITTED(未提交读) READ COMMITTED(提交读) REPEATABLE READ (可重复读) SERIALIZABLE(可串行化) 下面会分别用一些例子来解释各种隔离级别,在开始之前,首先要了解一些前提知识: AUTOCOMMIT:MySQL默认开启自动提交(AUTOCOMMIT),如果不是显式地开启一个事务,则每个查询都被当做一个事务执行提交操作.在当前连接中,可以通过设置 AUTOCOMMIT 变量来启用或者禁用自动提

MySql事务及隔离级别

在数据库中,所谓事务是指作为单个逻辑工作单元执行的一系列操作. 事务的操作: 先定义开始一个事务,然后对数据作修改操作, 这时如果提交(COMMIT),这些修改就永久地保存下来 如果回退(ROLLBACK),数据库管理系统将放弃您所作的所有修改而回到开始事务时的状态. 在JDBC中,事务默认是自动提交的,每次执行一个 SQL 语句时,如果执行成功,就会向数据库自动提交,而不能回滚 为了让多个 SQL 语句作为一个事务执行: •调用 Connection 对象的 setAutoCommit(fal

14.Mysql事务控制和锁定

14.事务控制和锁定存储引擎和锁: MyISAM和MEMORY存储引擎的表支持表级锁: BDB存储引擎的表支持页级锁: InnoDB存储引擎的表支持行级锁.默认情况下,表锁和行锁都是根据执行的语句自动获得和释放,不需要额外处理.用户也可根据业务需要来手动添加和释放锁,以保证事务的完整性. 14.1 Lock table和Unlock tableLock table可以锁定用于当前线程的表.如果表被其他线程锁定,则当前线程会等待,直到可以获取所需的锁定为止.Unlock table可以释放当前线程

Mysql 事务及其原理

Mysql 事务及其原理 什么是事务 什么是事务?事务是作为单个逻辑工作单元执行的一系列操作,通俗易懂的说就是一组原子性的 SQL 查询.Mysql 中事务的支持在存储引擎层,MyISAM 存储引擎不支持事务,而 InnoDB 支持,这是 Mysql 5.5.5 以后默认引擎由 MyISAM 换成 InnoDB 的最根本原因. 事务的 ACID 属性 原子性(Atomicity):作为逻辑工作单元,一个事务里的所有操作的执行,要么全部成功,要么全部失败. 一致性(Consistency):数据库

mysql事务与锁

事务acid原则 原子性 隔离性 一致性 持久性 事务的概念 把需要保证原子性.隔离性.一致性和持久性的一个或者多个数据库操作称为事务. 事务的使用 语法 begin;//开启一个事务 some sql;//需要执行的语句 savepoint bussiness1;//事务保存点 some sql; roll back to bussiness1;//回滚 commit;//提交事务 rollback;//如果需要手动回滚的话在提交之前删除这句 事务的自动提交 通常情况下mysql默认自动提交事