Aparentemente la versión actual de Kohana (2.2) aún no cuenta con soporte para transacciones en su clase Database.
Buscando entre los foros encontré una solución sencilla, rápida y elegante, sin embargo me preocupa que, a pesar de que utiliza la sintaxis de CodeIgniter, no vaya a ser compatible con la siguiente liberación de Kohana de la cual no encontré documentación.
Así que por ahora voy a establecer las transacciones de manera manual y -espero- compatible con las bases de datos y futuras liberaciones de Kohana.
Iniciar la transacción.
$this -> db -> query('SET AUTOCOMMIT=0');
$this -> db -> query('BEGIN');Aceptar/ejecutar la transacción.
$this -> db -> query('COMMIT');
$this -> db -> query('SET AUTOCOMMIT=1');Cancelar/devolver la transacción.
$this -> db -> query('ROLLBACK');
$this -> db -> query('SET AUTOCOMMIT=1');Nota: para Microsoft SQL Server los comandos deberán ser BEGIN TRANSACTION, COMMIT TRANSACTION y ROLLBACK TRANSACTION. Las modificaciones al AUTOCOMMIT no son válidas para este motor de base de datos.
Enlaces:
- Transacciones con CodeIgniter.
- Kohana Database Library.
- Kohana General Discussion: Use transaction with Database library.
- Solución propuesta por Vijay Mahrra.
No hay artículos relacionados.




