0

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

- 原子性(Atomicity)

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

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

- 一致性(Consistency)

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

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

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

Yasuo 2
5月14日提问
2 个回答
0

已采纳

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

0

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

撰写答案

推广链接