《SQL基础教程(第2版)》第四章,事物的一致性讲解有错误吗?

发布于 2022-09-11 19:49:14 字数 734 浏览 13 评论 0

下面摘自 《SQL基础教程(第2版)》第四章

- 原子性(Atomicity)

原子性是指在事务结束时,其中所包含的更新处理要么全部执行,要么完全不执行,也就是要么占有一切要么一无所有。例如,在之前的例子中,在事务结束时,绝对不可能出现运动
T 恤的价格下降了,而 T
恤衫的价格却没有上涨的情况。该事务的结束状态,要么是两者都执行了(COMMIT),要么是两者都未执行(ROLLBACK)。

从事务中途停止的角度去考虑,就能比较容易理解原子性的重要性了。由于用户在一个事务中定义了两条 UPDATE 语句,DBMS
肯定不会只执行其中一条,否则就会对业务处理造成影响。

- 一致性(Consistency)

一致性指的是事务中包含的处理要满足数据库提前设置的约束,如主键约束或者 NOT NULL 约束等。例如,设置了 NOT NULL
约束的列是不能更新为 NULL 的,试图插入违反主键约束的记录就会出错,无法执行。对事务来说,这些不合法的 SQL 会被回滚。也就是说,这些
SQL 处理会被取消,不会执行。

一致性也称为完整性(图 4-5)。 图片描述

图片最后说只有②-2的更新没有被反映到数据库中,但由于事物的原子性,②-2执行失败,那么应该全部都不执行才对啊,求解。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

狂之美人 2022-09-18 19:49:14

原子性的意思是begin到commit是一个整体,如果在commit之前断电了或者数据库挂了或者会话被杀了,那么整个事务回滚;
事务中某一个语句执行抛出error,并不是原子性的范畴。

放肆 2022-09-18 19:49:14

不知道是特指某一种数据库还是所有。
在 MySQL 中事务中的 SQL 执行出错,并不影响最终的 commit 。需要在程序中,捕获异常后执行 rollback 。

对你的占有欲 2022-09-18 19:49:14

被采纳的回答是开玩笑呢?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文