事务 ODBC

“事务”是作为单个原子操作完成的工作单元;也就是说,操作作为一个整体成功或失败。 例如,考虑将资金从一个银行帐户转移到另一个银行帐户。 这涉及两个步骤:从第一个帐户提取资金,并将其存入第二个帐户。 重要的是,这两个步骤都要重要:一个步骤成功,而另一个步骤失败,这是不能接受的。 支持事务的数据库能够保障这一点。

可以通过“提交”或“回滚”来完成事务。 提交事务时,该事务中所做的更改具有永久性。 回滚事务时,受影响的行将返回到事务开始前的状态。 为了扩展帐户转移示例,应用程序执行一个 SQL 语句来借记第一个帐户,执行另一个 SQL 语句来贷记第二个帐户。 如果这两个语句都成功,应用程序会提交事务。 但是,如果任一语句因任何原因失败,应用程序会回滚事务。 在任一情况下,应用程序都保障事务结束时的状态一致。

单个事务可以包含在不同时间发生的多个数据库操作。 如果其他事务对中间结果有完全访问权限,则事务可能会相互干扰。 例如,假设一个事务插入一行,第二个事务读取该行,第一个事务回滚。 第二个事务现在具有不存在的行的数据。

如果要解决此问题,有多种方案可以相互隔离事务。 “事务隔离”通常通过锁定行实现,这样可以阻止多个事务同时使用同一行。 在某些数据库中,锁定一行也可能锁定其他行。

随着事务隔离的增加,并发性降低,即两个事务同时使用同一数据的能力降低。 有关更多信息,请参阅设置事务隔离级别

本部分包含以下主题。