Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » UltraLite - 数据库管理和参考 » UltraLite 性能提示 » 插入和更新性能提示 » 事务和行状态管理

 

UltraLite 事务处理

事务是自动执行操作的逻辑组:或者事务中的所有操作都存储在数据库中,或者一个都不存储。UltraLite 应用程序对 UltraLite 运行时的访问进行了序列化。当可能同时打开多个事务时,UltraLite 每次仅处理一个事务。此行为意味着应用程序无法:

  • 拥有阻塞的事务(也称为死锁)。UltraLite 从不阻塞基于现有行锁的请求。这种情况下,UltraLite 立即返回一个错误。

  • 覆盖未完成的修改。一个事务无法覆盖另一个事务的未完成的修改。当某个事务更改一行时,UltraLite 锁定该行直至提交回退 该事务。锁定可以防止其它事务更改此行,但它们仍能读取此行。

提示

所有 UltraLite API—除了 UltraLiteJ 和 C++ API—都可以在自动提交模式中操作。

在自动提交模式下,UltraLite 在每次操作后执行提交。一些 API 在缺省情况下使用自动提交。如果使用这些接口,则必须关闭自动提交设置,以便利用多操作事务。关闭自动提交的方法取决于所用的编程接口。在大多数接口中,自动提交是连接对象的一个属性。

请参见:

例如,A 和 B 两个应用程序从数据库读取相同的行,并都根据它们读取的数据为该行的某列计算新值。如果 A 使用它的新值更新行,然后 B 尝试修改同一行,则 B 会得到一个错误。尝试更改锁定的行会导致错误 SQLCODE SQLE_LOCKED,而尝试更改已删除的行会导致错误 SQLE_NOTFOUND。因此,应这样编写应用程序使它在尝试修改数据之后检查 SQLCODE 值。

 另请参见