Esto no es nada nuevo, pero me gustaría postearlo aquí debido a que me acaba de servir y estas son dos herramientas muy utilizadas a nivel mundial.
Primero que todo necesitamos contar con los servidores (php y mysql) instalados previamente. Luego necesitamos habilitar el soporte INNODB en mysql, ver en este
post.
Es importante saber que las transacciones son soportadas solo para las tablas tipo innodb, así que necesitamos crear las tablas o modificarlas con éste tipo. Esto se logra fácilmente con el atributo ENGINE = INNODB.
Aquí esta el código para hacerlo.
Crear:
CREATE TABLE tabla ... ENGINE = INNODB;
Modificar:
ALTER TABLE tabla ENGINE = INNODB;
No hay que preocuparse con los datos en la modificación ya que no sufren alteraciones.
Luego ya en el código de php tendremos algo como lo siguiente:
$SERVIDOR="TuHost";
$BASE_DATOS="TuBaseDeDatos";
$USUARIO="TuUsuario";
$PASSWORD="TuPassword";
$db = mysql_connect($SERVIDOR,$USUARIO,$PASSWORD);
mysql_select_db($BASE_DATOS,$db);
$error = 0; //variable para detectar error
mysql_query("BEGIN"); // Inicio de Transacción
$result=mysql_query("INSERT INTO tabla1 VALUES (1,1000)");
if(!$result)
$error=1;
$result=mysql_query("INSERT INTO tabla2 VALUES (1,2000)");
if(!$result)
$error=1;
if($error) {
mysql_query("ROLLBACK");
echo "Error en la transaccion";
} else {
mysql_query("COMMIT");
echo "Transacción exitosa";
}
En el código anterior se ven 2 inserciones que se realizarán (COMMIT) si no ocurre ningún error en las dos, en caso contrario se regresarán sus valores anteriores (ROLLBACK).
Bueno espero que les sirva y si tienen alguna duda ya saben; pongan su comentario.