博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL事务autocommit自动提交
阅读量:5867 次
发布时间:2019-06-19

本文共 1004 字,大约阅读时间需要 3 分钟。

  hot3.png

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不支持事务的存储引擎。

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

转载于:https://my.oschina.net/dyxp/blog/383764

你可能感兴趣的文章
jsp放在web-inf目录下
查看>>
OpenGL进阶(十五) - 弹簧质点系统(Mass Spring Systems)
查看>>
安装discuz advice_mysqli_connect
查看>>
六、Python函数
查看>>
微信小程序开发教程
查看>>
Spring Boot 中实现定时任务的两种方式
查看>>
Red Hat 系列如何快速定制二进制内核 RPM 包?
查看>>
cent os 7 安装 rabbitmq
查看>>
SQL 注入
查看>>
用gperftools优化Nginx和MySQL内存管理
查看>>
ORA-00600[kcratr_nab_less_than_odr]故障解决
查看>>
CentOS6.5基于iptables实现单网卡端口转发
查看>>
不管是建站或APP,都一定要有个好LOGO
查看>>
我的友情链接
查看>>
如何修改Windows server 2012远程桌面连接数
查看>>
信号捕获trap及其实例应用
查看>>
python语言磁力搜索引擎源码公开,基于DHT协议
查看>>
不同VLAN之间相互通信的两种方式(单臂路由、三层交换)
查看>>
Java --深入分析java中的中文编码问题
查看>>
企业邮件系统的发展和变化
查看>>