beginTransaction
启动一个数据库事务,并创建一个Transaction实例。
完成后,必须调用 Transaction 方法的 commit() 或 rollback() 来关闭事务,并调用 release() 来释放与该事务相关的系统资源。
在多线程应用程序中,如果需要在多个线程之间共享单个数据库连接,则必须使用 McoSqlSession 类及其 Database 成员的 beginTransaction() 方法。
Transaction* SqlEngine::beginTransaction(
mode,
priority = 0,
level = Transaction::DefaultIsolationLevel
)
参数
mode
Transaction::Mode
事务模式,可选值:Exclusive | ReadOnly | ReadWrite | Update
。
priority
int
指定事务优先级的整数值。
请参阅事务优先级和调度页面。
level
Transaction::IsolationLevel
事务隔离级别。 Transaction::IsolationLevel: DefaultIsolationLevel | ReadCommitted | RepeatableRead | Serializable
。
请参阅事务隔离级别页面。
返回
Transaction
此方法返回一个Transaction 对象。
RuntimeException
在出现错误的情况下抛出一个 RuntimeException 异常。
示例
const char * dbname = "SqlDb";
int main(int argc, char* argv[])
{
McoSqlEngine engine;
...
engine.open(db_name, // 数据库名
SqlDb_get_dictionary(), // 数据库字典
DATABASE_SIZE, // 数据库大小
MEMORY_PAGE_SIZE, // 页面大小:通常由处理器架构决定。
MAP_ADDRESS); // 共享内存模式的映射地址
...
Transaction* trans = engine.beginTransaction(Transaction::ReadWrite);
engine.executeStatement(trans, "update Member set balance=%i where id=%i", fromBalance, idFrom);
engine.executeStatement(trans, "update Member set balance=%i where id=%i", toBalance, idTo);
trans->commit();
trans->release();
...
}