Sybase SQL Anywhere:使用CodeIgniter回滚事务



我正在使用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(;

相关内容

  • 没有找到相关文章

最新更新