《SQL基础教程(第2版)》第四章,事物的一致性讲解有错误吗?
下面摘自 《SQL基础教程(第2版)》第四章
- 原子性(Atomicity)
原子性是指在事务结束时,其中所包含的更新处理要么全部执行,要么完全不执行,也就是要么占有一切要么一无所有。例如,在之前的例子中,在事务结束时,绝对不可能出现运动
T 恤的价格下降了,而 T
恤衫的价格却没有上涨的情况。该事务的结束状态,要么是两者都执行了(COMMIT),要么是两者都未执行(ROLLBACK)。从事务中途停止的角度去考虑,就能比较容易理解原子性的重要性了。由于用户在一个事务中定义了两条 UPDATE 语句,DBMS
肯定不会只执行其中一条,否则就会对业务处理造成影响。- 一致性(Consistency)
一致性指的是事务中包含的处理要满足数据库提前设置的约束,如主键约束或者 NOT NULL 约束等。例如,设置了 NOT NULL
约束的列是不能更新为 NULL 的,试图插入违反主键约束的记录就会出错,无法执行。对事务来说,这些不合法的 SQL 会被回滚。也就是说,这些
SQL 处理会被取消,不会执行。一致性也称为完整性(图 4-5)。
图片最后说只有②-2的更新没有被反映到数据库中,但由于事物的原子性,②-2执行失败,那么应该全部都不执行才对啊,求解。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
原子性的意思是begin到commit是一个整体,如果在commit之前断电了或者数据库挂了或者会话被杀了,那么整个事务回滚;
事务中某一个语句执行抛出error,并不是原子性的范畴。
不知道是特指某一种数据库还是所有。
在 MySQL 中事务中的 SQL 执行出错,并不影响最终的 commit 。需要在程序中,捕获异常后执行 rollback 。
被采纳的回答是开玩笑呢?