Я использую 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
Я пытался изменить следующие параметры:
Что странно, так это то, что я записываю свои запросы: выполнение их вручную в 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);
Других решений пока нет …