PEAR::DB proporciona mecanismos para tratar las transacciones independientemente del SGBD con que trabajemos.
Como ya hemos comentado, la operativa con las transacciones está relacionada con las sentencias begin, commit y rollback de SQL. PEAR::DB envuelve estas sentencias en llamadas a métodos suyos, del modo siguiente:
Atención |
En MySQL sólo funcionará el soporte de transacciones si la base de datos está almacenada con el mecanismo InnoDB. En PostgreSQL no hay restricción alguna. |
En ningún sitio... |
... se hace un begin. Al desactivar el autocommit (que está activado por defecto) todas las sentencias pasarán a formar parte de una transacción, que se registrará como definitiva en la base de datos al llamar al método commit() o bien se desechará al llamar al método rollback(), volviendo la base de datos al estado en el que estaba después del último commit(). |
// Desactivamos el comportamiento de COMMIT automático.
$db->autocommit(false);
..
..
if (...) {
$db->commit();
} else {
$db->rollback();
}