第19章数据库一致性与事务管理 数据库中的数据是每时每刻都有可能发生变化的。但 是这种变化必须是可以接受的和合理的。即数据必须保持一 致性。事务是保证数据一致性的重要手段。本章将从以下几 个方面讲述数据一致性。 什么是数据库一致性和事务 Oracle中的事务 事务的属性和隔离级别 事务的处理原则 通过本章的学习,读者可以对数据一致性有清晰的认 识,并了解Oracle中的事务处理原则
Oracle Oracle
19.1数据一致性和事务 用户对数据库的操作是复杂多变的。这些复杂的动作 可能是一个逻辑整体,如果处理不当极易造成数据不一致。 同属一个逻辑整体的操作应该作为一个事务进行处理,从而 避免出现数据不一致性
19.1.1 Oracle中的数据一致性 数据库是现实世界的反映。例如,一个存储了多家连锁店 铺库存信息的数据库,如果需要进行货物调配,则需要进行数 据更新。从A店调出的货物送至B店,那么A店对应的库存量应 该进行削减,B店库存进行相应增加。在数据库中的实际操作 应该是两条SQL语句,一条语句减少A店库存,另外一条增加 B店库存。但是,数据库有可能拋出这样那样的异常,例如, 第一条语句执行完毕,突然断电,或者第二条语句由于其他原 因(如表本身的约束)而没有执行成功,就造成了数据不符合 实际情况,即实际库存与数据库记录不符。 类似的场景还有很多,但作为存储基础数据的数据库,必 须避免任何犯错的可能,即必须保持数据一致性
A B A B SQL A B
19.1.2 Oracle中的事务 事务是保证数据一致性的重要手段。试图改变数据库 状态的多个动作应该视作一个密不可分的整体。无论其中经 过了多么复杂的操作,该整体执行之前和执行之后,数据库 均可保证一致性。整个逻辑整体即使一个事务。 事务 操作1 数据保持一致性 操作2 操作3 数据保持一致性
数据保持一致性 数据保持一致性 操作1 操作2 操作3 ... 事务
19.2 Oracle中的事务处理 一个事务的生命周期包括,事务开始、事务执行和事务 结束。在Oracle中,并不会显式声明事务的开始,而是由 Oracle自行处理。事务的结束可以利用commit.或者rollback 命令。本节将从以下角度讲述Oracle中的事务处理。 利用Commit命令结束事务 利用Rollback命令结束事务 事务属性和隔离级别
Oracle Oracle commit rollback Oracle Commit Rollback