Transacciones en MySQL

Tiempo de lectura estimado: 2 minutos

Seguro que muchos habéis oido hablar de las transacciones SQL. Sus usos, sus pros y contras y un largo etc que está muy bien documentado. Y como hoy en día hay información a patadas, vamos a pasar al plato fuerte. Un caso real y como siempre sencillito para no marearnos en exceso.

Supongamos que tenemos nuestra tabla de categorías y nuestra tabla de productos en nuestra base de datos. Tenemos nuestro backend donde nos muestra el listado de productos y las categorías a las que pertenecen.

Pero qué pasa cuando quiero cambiar la categoría de +100 productos?. ¿Voy producto por producto?.  Y si cambio el nombre de la categoría ha de verse reflejado en los productos a los que pertenece.

Aquí entra en juego las transacciones. Necesitaba actualizar las 2 tablas al mismo tiempo y que no hubiese ningún problema durante el transcurso de la operación. Y en caso de que lo hubiese, no se aplicara ningún cambio.

Vistazo general del listado de productos con las categorías a las que pertenece cada uno de ellos.

 

 

Y ahora que tenemos la idea, vamos a ponerla en práctica.

[code language=”php”]
try {
$query=$this->dbh;

$query->beginTransaction();

//Actualizamos la primera tabla
$sql = “UPDATE tipoproducto SET tipoProducto = ‘”.$tipoProducto.”‘ , imgCategoria = ‘”.$imgCategoria.”‘ WHERE idTipo = ‘”.$idTipo.”‘”;

$stmt = $query->prepare($sql);
$stmt->execute(array(
‘:idTipo’ => $idTipo,
‘:tipoProducto’ => $tipoProducto,
‘:imgCategoria’ => $imgCategoria
)
);

//Actualizamos la segunda
$sql = “UPDATE productos SET tipoProducto = ‘$tipoProducto’ WHERE idTipo = ‘$idTipo'”;
$stmt = $query->prepare($sql);
$stmt->execute(array(
‘:idTipo’ => $idTipo,
‘:tipoProducto’ => $tipoProducto
)
);
//Si todo ha ido bien, hacemos un commit.
$query->commit();
} catch (Exception $e) {
$query->rollBack();
// $e->getMessage();
// exit($e);
//Si ha habido error, se deshacen cambios.

}
[/code]

Saludos!.

Deja un comentario

© 2024 - Serna Studio

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar