一、事务的ACID特性: 1)原子性 2)一致性 3)隔离性 4)持久性 二、对于事务的原子性(A)我们知道事务中的操作要么都做要么都不做。对于这一点许多人有错误的理解,我们来看一个例子: 1) mysql> select * from t4; +----+------+ | id | name | +----+------+ | 1 | A | | 2 | B | | 3 | C | +----+------+ 3 rows in set (0.00 sec) 2)开启一个事务 mysql> start transaction; Query OK, 0 rows affected (0.00 sec) mysql> update t4 set name='AA' where id=1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> update t4 set name='BBBBB' where id=2; ERROR 1406 (22001): Data too long for column 'name' at row 2 mysql> commit; Query OK, 0 rows affected (0.03 sec) mysql> select * from t4; +----+------+ | id | name | +----+------+ | 1 | AA | | 2 | B | | 3 | C | +----+------+ 3 rows in set (0.01 sec) 结果是不是预想的是不一样的,id=1的记录怎么会执行成功,难道不应该全部回滚吗? 身边有不少的人错误的理解为:事务中有执行错误的语句(error),那么整个事务都会回滚。 3)总结 我们所说的要么全成功要么全失败,成功与失败取决于我们最后是commit还是rollback。commit将所有的语句执行,rollback将所有的语句执行撤销。 上面的例子中,我们是commit操作,即便是有错误语句,也会将所有语句执行一次,commit之后将修改的数据刷新到磁盘持久化。所以对于上面的操作我们应该是rollback。 个人理解:开启一个事务后,错误的语句会被分析器过滤掉,当我们commit的时候对于MySQL来说只有正确的语句(虽然我们知道有条语句是错误的),所以在我们捕捉到异常的时候应当将事务显示的rollback而不是commit。
MySQL事务的原子性
来源:这里教程网
时间:2026-03-01 11:11:42
作者:
编辑推荐:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Grafana+Prometheus 监控 MySql服务
Grafana+Prometheus 监控 MySql服务
26-03-01 - 3D MAX教程:树屋室内效果图制作流程解析
3D MAX教程:树屋室内效果图制作流程解析
26-03-01 - MySQL 8.0能彻底解决困扰运维的复制延迟问题!
MySQL 8.0能彻底解决困扰运维的复制延迟问题!
26-03-01 - 怎么查看Word2013文档修改次数
怎么查看Word2013文档修改次数
26-03-01 - 【Mysql】MySQL 5.7中如何定位DDL被阻塞的问题
【Mysql】MySQL 5.7中如何定位DDL被阻塞的问题
26-03-01 - MySQL:slave 延迟一列 外键检查和自增加锁
MySQL:slave 延迟一列 外键检查和自增加锁
26-03-01 - 3ds MAX材质教程:虎皮毛发抱枕的制作流程
3ds MAX材质教程:虎皮毛发抱枕的制作流程
26-03-01 - 怎样更改word2013中所有英文字体
怎样更改word2013中所有英文字体
26-03-01 - 3DS MAX实例教程:模拟真实的反应堆动画
3DS MAX实例教程:模拟真实的反应堆动画
26-03-01 - 怎么在word2013中使用高级计算功能
怎么在word2013中使用高级计算功能
26-03-01
