La transacciones en mysql ¿qué son? ¿cómo se
utilizan? ¿para qué sirven?. Estas son las cuestiones que voy a intentar explicar
de la manera más simple posible.
¿Qué son las transacciones?
Una transacción es un conjunto de operaciones SQL que se ejecutan como un único bloque, es decir, si falla una operación fallan todas. Es una unidad única de trabajo. Si una transacción tiene éxito, todas las modificaciones de los datos realizadas durante la transacción se confirman y se convierten en una parte permanente de la base de datos. Si una transacción encuentra errores y debe cancelarse o revertirse, se borran todas las modificaciones de los datos.
Una transacción es un conjunto de operaciones SQL que se ejecutan como un único bloque, es decir, si falla una operación fallan todas. Es una unidad única de trabajo. Si una transacción tiene éxito, todas las modificaciones de los datos realizadas durante la transacción se confirman y se convierten en una parte permanente de la base de datos. Si una transacción encuentra errores y debe cancelarse o revertirse, se borran todas las modificaciones de los datos.
¿Para qué sirven?
Un ejemplo de transacción puede ser una transferencia bancaria… Quitamos saldo a una cuenta y lo añadimos en otra. Si no somos capaces de abonar el dinero en la cuenta de destino, no podemos quitarlo de la cuenta de origen. Como este ejemplo seguro que en vuestra carrera os cruzareis con otros muchos similares en los que tener nociones de cómo manejar esta herramienta os puede resultar realmente útil.
Un ejemplo de transacción puede ser una transferencia bancaria… Quitamos saldo a una cuenta y lo añadimos en otra. Si no somos capaces de abonar el dinero en la cuenta de destino, no podemos quitarlo de la cuenta de origen. Como este ejemplo seguro que en vuestra carrera os cruzareis con otros muchos similares en los que tener nociones de cómo manejar esta herramienta os puede resultar realmente útil.
Por último
pero no menos importante vamos a ver cómo podemos utilizar esta herramienta con
el lenguaje favorito de este blog …PHP
¿Cómo se utilizan con PHP?
En principio php no realiza ninguna función dentro de
las transacciones. La única cuestión real que tiene importancia dentro de tu
código php es que realice las querys de manera ordenada hacia MySQL. Para trabajar con
transacciones con php y mysql es importante tener en cuenta:
1. Que tu base de datos tenga soporte
para base de datos innodb.
2. Las transacciones sólo son
soportadas sólo para las tablas tipo innodb, así que necesitamos crear las
tablas o modificarlas con éste tipo. Ante la pregunta … ¿Cómo me aseguro que
mis tablas sean innodb? Ejecutando la siguiente query en tu base de datos :
ALTER TABLE tutabla ENGINE = INNODB;
Y ahora un ejemplo básico con código
php
<?php
$servidor="TuHost";
$base_de_datos="TuBaseDeDatos";
$usuario="TuUsuario";
$pass="TuPassword";
$dbh = mysql_connect($servidor,$usuario,$pass);
mysql_select_db($base_de_datos,$dbh);
$sql = "SET AUTOCOMMIT=0;";
$resultado = mysql_query($sql, $dbh);
$sql = "BEGIN;";
$resultado = mysql_query($sql, $dbh);
$sql = "SELECT * FROM primera;
";
$resultado = mysql_query($sql, $dbh);
$sql = "INSERT INTO `segunda`
(`id`, `descripcion`) VALUES ('', 'Otro
valor');";
$resultado = mysql_query($sql, $dbh);
$sql = "INSERT INTO `primera`
(`id`, `ripcion`) VALUES (´´, ´Otro valor´);";
$resultado = mysql_query($sql, $dbh);
if ($resultado) {
echo 'OK';
echo '';
$sql = "COMMIT";
$resultado = mysql_query($sql, $dbh);
}
else
{
echo 'MAL';
echo '
';
echo 'SE EJECUTA EL ROOLBACK';
echo '
';
$sql = "ROLLBACK;";
$resultado = mysql_query($sql, $dbh);
}
?>
No hay comentarios:
Publicar un comentario