27、SQL 事务全解析:从基础到实践

SQL 事务全解析:从基础到实践

1. 事务概述

在 SQL 中,事务是一组 SQL 语句的逻辑工作单元。在数据录入过程中,常常需要向多个不同的表中添加数据,或者修改部分表中的数据。若其中任何一个操作失败,那么整个操作集都必须撤销。为了确保所有操作要么全部执行,要么全部不执行,就需要使用事务。

一个事务需要通过 ACID 测试,以下是 ACID 的具体含义:
|属性|含义|示例|
| ---- | ---- | ---- |
|原子性(Atomic)|指语句组的“全有或全无”行为。若任何一条语句失败,整个语句组都必须撤销或回滚。只有当所有语句都成功执行时,整个语句组的结果才会保存到数据库中。|病人入院时,需要创建新的病人记录或更新现有记录,创建入院记录,并分配床位。若病人已办理入院但未分配床位,这显然是不合理的。|
|一致性(Consistent)|事务结束时,数据库必须处于一致状态。SQL 语句必须无错误地应用,所有数据库结构必须正确并保存。|在数据库决策过程中,数据更新不能覆盖之前的更新,且不能基于非永久性的数据添加或删除记录。|
|隔离性(Isolated)|事务对数据的更改在应用之前或期间,不能被其他用户看到。其他数据库用户必须看到事务结束时的数据状态,以免基于无效数据做出决策或产生错误。|若客户在最后一刻决定更改订单,导致原订单回滚,不能因为原订单曾短暂可见,使库存看起来不足,而让另一个订单变成缺货状态。|
|持久性(Durable)|事务结束时,数据库必须正确保存数据。停电、设备故障或其他问题不应导致部分保存或不完整的数据更改。大多数 DBMS 通过在与主数据库完全不同的驱动器上保存事务日志来满足这一要求。| |

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值