事务(MFC 数据访问)

已开发出事务的概念以便根据一系列成功操作处理数据库结果状态的情况。 由于连续性操作可能修改先前操作的结果,因此可能会出现这种情况。 在这种情况下,如果任何一个操作失败,结果状态就有可能不确定。

要解决此问题,事务可以按以下这种方式对一系列操作进行分组,即以可以确定最后结果的完整性的这种方式分组。 所有操作必须成功,然后提交(写入到数据库),否则整个事务失败。 取消事务被称为回滚。 回滚允许恢复所做的更改,将数据库返回到事务前状态。

例如,在自动化银行事务中,如果将资金从帐户 A 转移到帐户 B,则从 A 取款和存入 B 的操作都必须成功以便正确处理款项,否则整个事务必须失败。

事务必须具有 ACID 属性,代表以下涵义:

  • 原子性事务是工作的原子单位,只执行一次;要么所有的工作已完成,要么没有执行任何一项工作。

  • 一致性事务保持数据的一致性,将数据的一个一致性状态转换成数据的另一个一致性状态。 必须在语义上保留事务绑定的数据。

  • 隔离性事务是一个隔离单元,每个隔离单元单独发生,独立于并发事务。 一个事务绝不可能看到另一个事务的中间阶段。

  • 持久性事务是一个恢复单元。 如果一个事务成功,它就会持续更新,即使该系统崩溃或已关闭。 如果事务失败,系统仍然处于之前提交事务的状态。

你可以支持 OLE DB 中的事务(请参阅支持 OLE DB 中的事务)或 ODBC(请参阅事务 (ODBC))。

分布式事务是指更新分布式数据的事务,即多个连网计算机系统上的数据。 如果想支持分布式系统上的事务,应使用 ADO.NET 而不是 OLE DB 事务支持。

另请参阅

数据访问编程 (MFC/ATL)