我正在使用SQL Anywhere运行CodeIgniter 2(我有一个自定义类来处理与SAP DLL的连接(。
我对包含许多查询的事务有问题。其中之一是引发一个错误(在尝试更新表时由触发器返回(:在这种情况下,我希望在处理结束时回滚事务,如下所示。
$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->query('ANOTHER QUERY...'); //This raises an error
$this->db->trans_complete(); //A rollback is done, and should cancel the first query
我尝试更改以下选项:
- chained=>关闭
- continue_after_raiserror=>打开
- on_tsql_error=>继续
奇怪的是,我正在记录我的查询:在Interactive SQL中手动执行查询效果很好!引发的错误似乎破坏了交易。
有人能帮我吗?
感谢
最后我找到了解决方案:我们只需要使用SAP PHP的DLL提供的一些函数(http://dcx.sap.com/index.html#sa160/en/dbprogramming/php-support.html(.
-
开始交易时使用:
sasql_set_option($this->conn_id,'auto_commit',0(;
-
最后,如果您需要提交:
sasql_commit($conn_id(;
-
如果您需要回滚:
sasql_rollback($conn_id(;sasql_set_option($conn_id,'auto_commit',1(;