mysql 事务autocommit_MySQL事务autocommit自动提交

MySQL默认操做模式就是autocommit自动提交模式。这就表示除非显式地开始一个事务,不然每一个查询都被当作一个单独的事务自动执行。咱们能够经过设置autocommit的值改变是不是自动提交autocommit模式。mysql

经过如下命令能够查看当前autocommit模式sql

mysql> show variables like 'autocommit';数据库

+---------------+-------+事务

| Variable_name | Value |资源

+---------------+-------+it

| autocommit    | ON    |数据

+---------------+-------+查询

1 row in set (0.04 sec)co

从查询结果中,咱们发现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不支持事务的存储引擎。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值