Procedimientos almacenados transaccionales en MySQL
La ejecución de múltiples declaraciones SQL de manera transaccional dentro de un procedimiento almacenado garantiza que todas las declaraciones se ejecuten correctamente o ninguna ejecutar en absoluto. Este comportamiento es fundamental para mantener la coherencia e integridad de los datos. Así es como puede lograr transacciones en su procedimiento almacenado MySQL:
Corrección de errores de sintaxis
En el fragmento de código proporcionado, hay dos errores de sintaxis que impiden el procedimiento almacenado de convertirse en transaccional. La sintaxis correcta es la siguiente:
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
ROLLBACK;
END;
Este código declara un controlador de salida que revertirá automáticamente cualquier cambio si se produce una excepción o advertencia de SQL durante la ejecución del procedimiento almacenado. Las comas entre las condiciones para el controlador de salida y el punto y coma al final de la declaración DECLARE son cruciales para el correcto funcionamiento del procedimiento almacenado.
Ejemplo
Una vez Los errores de sintaxis se han corregido, el procedimiento almacenado se puede hacer transaccional encerrando las declaraciones SQL dentro de un bloque START TRANSACTION...COMMIT. A continuación se muestra un ejemplo de un procedimiento almacenado transaccional:
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
ROLLBACK;
END;
START TRANSACTION;
-- Your SQL statements here
COMMIT;
END
Uso
Para utilizar el procedimiento almacenado transaccional, simplemente llámelo desde el código de su aplicación como un procedimiento almacenado normal. Si todas las declaraciones SQL dentro del procedimiento almacenado se ejecutan exitosamente, la declaración COMMIT hará que estos cambios sean permanentes en la base de datos. Si se produce alguna excepción o advertencia de SQL, la instrucción ROLLBACK deshará automáticamente todos los cambios.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3