事务是自动执行操作的逻辑组:或者事务中的所有操作都存储在数据库中,或者一个都不存储。UltraLite 应用程序对 UltraLite 运行时的访问进行了序列化。当可能同时打开多个事务时,UltraLite 每次仅处理一个事务。此行为意味着应用程序无法:
拥有阻塞的事务(也称为死锁)。UltraLite 从不阻塞基于现有行锁的请求。这种情况下,UltraLite 立即返回一个错误。
覆盖未完成的修改。一个事务无法覆盖另一个事务的未完成的修改。当某个事务更改一行时,UltraLite 锁定该行直至提交 或回退 该事务。锁定可以防止其它事务更改此行,但它们仍能读取此行。
例如,A 和 B 两个应用程序从数据库读取相同的行,并都根据它们读取的数据为该行的某列计算新值。如果 A 使用它的新值更新行,然后 B 尝试修改同一行,则 B 会得到一个错误。尝试更改锁定的行会导致错误 SQLCODE SQLE_LOCKED,而尝试更改已删除的行会导致错误 SQLE_NOTFOUND。因此,应这样编写应用程序使它在尝试修改数据之后检查 SQLCODE 值。
有关如何处理错误的详细信息,请参见:
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |