Sybase SQL Anywhere: транзакция отката с использованием CodeIgniter

Я использую CodeIgniter 2 с SQL Anywhere (у меня есть собственный класс для обработки соединения с 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

Я пытался изменить следующие параметры:

  • прикованный => выкл
  • continue_after_raiserror => Вкл
  • on_tsql_error => Продолжить

Что странно, так это то, что я записываю свои запросы: выполнение их вручную в Interactive SQL работает хорошо!
Похоже, что возникшая ошибка нарушает транзакцию.

Может ли кто-нибудь помочь мне?

Спасибо

0

Решение

Наконец, я нахожу решение: нам просто нужно использовать некоторые функции, предоставляемые 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);

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]