这篇文章主要讲解了“MySQL事务的原子性分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL事务的原子性分析”吧!一、事务的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: 0mysql> update t4 set name=’BBBBB’ where id=2;ERROR 1406 (22001): Data too long for column ‘name’ at row 2mysql> commit;Query OK, 0 rows affected (0.03 sec)mysql> s免费主机域名elect * from t4;+—-+——+| id | name |+—-+——+| 1 | AA || 2 | B || 3 | C |+—-+——+3 rows in set (0.01 sec)结果是不是预想的是不一样的,id=1的记录怎么会执行成功,难道不应该全部回滚吗?身边有不少的人错误的理解为:事务中有执行错误的语句(error),那么整个事务都会回滚。我们所说的要么全成功要么全失败,成功与失败取决于我们最后是commit还是rollback。commit将所有的语句执行,rollback将所有的语句执行撤销。上面的例子中,我们是commit操作,即便是有错误语句,也会将所有语句执行一次,commit之后将修改的数据刷新到磁盘持久化。所以对于上面的操作我们应该是rollback。个人理解:开启一个事务后,错误的语句会被分析器过滤掉,当我们commit的时候对于MySQL来说只有正确的语句(虽然我们知道有条免费主机域名语句是错误的),所以在我们捕捉到异常的时候应当将事务显示的rollback而不是commit。
感谢各位的阅读,以上就是“MySQL事务的原子性分析”的内容了,经过本文的学习后,相信大家对MySQL事务的原子性分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是云技术,小编将为大家推送更多相关知识点的文章,欢迎关注!
相关推荐: 如何解决安装oracle软件出现PRVF-4354问题
本篇内容主要讲解“如何解决安装oracle软件出现PRVF-4354问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决安装oracle软件出现PRVF-4354问题”吧!oracle软件安装时在check时…