UltraLite 提供了事务处理机制以确保数据库中数据的完整性。事务是一个逻辑工作单元。要么执行整个事务,要么不执行事务中的任何语句。
缺省情况下,UltraLite.NET 在 AutoCommit 模式下运行,所以,每个插入、更新或删除都会作为一个独立事务来执行。一旦操作完成后,也就完成了对数据库的更改。
要使用多语句事务,必须通过调用 ULConnection.BeginTransaction 创建一个 ULTransaction 类对象。例如,如果应用程序在两个帐户之间转移资金,必须使用不同的操作,在减少汇出帐户金额的同时增加汇入帐户的金额,否则两个帐户都保持不变。
如果连接已执行了一个有效的事务,则必须执行 ULTransaction.Commit 语句以完成该事务,并向数据库提交更改。如果即将放弃更新集,则执行 ULTransaction.Rollback 语句取消和回退事务的所有操作。提交或回退一个事务后,连接将恢复为 AutoCommit 模式,直至下一次调用 ULConnection.BeginTransaction。
例如,以下代码段说明如何设置涉及多种操作的事务(避免缺省自动提交行为):
// Assuming an already open connection named conn ULTransaction txn = conn.BeginTransaction(IsolationLevel.ReadUncommitted); // Carry out transaction operations here txn.Commit(); |
UltraLite 只支持 IsolationLevel 枚举的 IsolationLevel.ReadUncommitted 成员。
某些 SQL 语句(尤其是更改数据库结构的语句)会导致所有待执行的事务被提交。运行中自动提交事务的 SQL 语句示例为:CREATE TABLE 和 ALTER TABLE。
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |