Capítulo 20. Realizar transacciones
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
20.0 Introducción
El servidor MySQL puede gestionar varios clientes al mismo tiempo porque es multihilo. Para hacer frente a la contención entre clientes, el servidor realiza los bloqueos necesarios para que dos clientes no puedan modificar los mismos datos a la vez. Sin embargo, a medida que el servidor ejecuta sentencias SQL, es muy posible que las sucesivas sentencias recibidas de un determinado cliente se intercalen con sentencias de otros clientes. Si un cliente ejecuta varias sentencias que dependen unas de otras, el hecho de que otros clientes puedan estar actualizando tablas entre esas sentencias puede causar dificultades.
Los fallos en las sentencias también pueden ser problemáticos si una operación con varias sentencias no se ejecuta hasta el final. Supongamos que una tabla flight
contiene información sobre los horarios de vuelos de las compañías aéreas, y quieres actualizar la fila del vuelo 578 eligiendo un piloto de entre los disponibles. Podrías hacerlo utilizando tres sentencias como las siguientes:
SET
@
p_val
=
(
SELECT
pilot_id
FROM
pilot
WHERE
available
=
'yes'
LIMIT
1
);
UPDATE
pilot
SET
available
=
'no'
WHERE
pilot_id
=
@
p_val
;
UPDATE
flight
SET
pilot_id
=
@
p_val
WHERE
flight_id
=
578
;
La primera declaración elige a un piloto disponible, la segunda marca al piloto como no disponible y la tercera asigna al piloto al ...
Get Libro de cocina de MySQL, 4ª edición now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.