事务管理¶
ACI提供了函数对事务进行管理,ACI所有DML操作隐式开启事务(应用程序也可以执行 ACITransStart 显示开启事务),应用必须显示执行 ACITransCommit 提交事务或者执行 ACITransRollback 回滚事务,否则数据变更无法提交:
提交事务:
r = ACITransCommit(svc, err, ACI_DEFAULT);
回滚事务:
r = ACITransRollback(svc, err, ACI_DEFAULT);
ACI的事务自动提交只能设置在语句级, ACIStmtExecute 函数的mode参数设置为ACI_COMMIT_ON_SUCCESS后,当前执行的操作会被立即提交:
r = ACIStmtExecute(svc, stmt, err, 1, 0, 0, 0, ACI_COMMIT_ON_SUCCESS);
其他特性:
1) 当我们执行了语句没有显示提交或回滚时,应用程序正常关闭当前连接时,在关闭连接之前ACI会自动执行一次事务提交;
2) DDL语句不受事务控制,这是数据库后端的特性,对于Oracle也同样适用。