Transacciones en procedimientos
Uso de una transacción dentro de un procedimiento almacenado
Cómo realizar transacciones con procedimientos almacenados
Uso de START TRANSACTION en la base de datos de proyectos
DELIMITER $$
CREATE PROCEDURE transaccion1()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
SELECT 'Ha ocurrido un error: se hace rollback y termina el procedimiento' AS Error;
END;
START TRANSACTION;
-- Sentencias SQL en base de datos proyectosDB
UPDATE empleado SET salario = 2000 WHERE cdemp = 'B09';
-- UPDATE empleado SET salario = 1000 WHERE cdemp = 'BBB';
INSERT INTO empleado(cdemp, nombre) VALUES ('B09', 'Pepe López');
UPDATE empleado SET salario = salario *1.1 WHERE cdemp = 'B09';
COMMIT;
END
$$
DELIMITER ;
Ejecución:
CALL transaccion1();
GET DIAGNOSTICS Statement
Obtención de información del error:
DELIMITER $$
CREATE OR REPLACE PROCEDURE transaccion2()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1
@p1 = MESSAGE_TEXT,
@p2 = RETURNED_SQLSTATE,
@p3 = MYSQL_ERRNO,
@p4 = TABLE_NAME;
SELECT 'Ha ocurrido un error: se hace rollback y termina el procedimiento' AS Info, @p1 AS Mensaje, @p2 AS Estado, @p3 AS Número, @p4 AS Tabla;
ROLLBACK;
END;
START TRANSACTION;
-- Sentencias SQL en base de datos ProyectosDB
UPDATE empleado SET salario = 2000 WHERE cdemp = 'B09';
-- UPDATE empleado SET salario = 1000 WHERE cdemp = 'BBB';
INSERT INTO empleado(cdemp, nombre) VALUES ('B09', 'Pepe López');
UPDATE empleado SET salario = salario *1.1 WHERE cdemp = 'B09';
COMMIT;
END
$$
DELIMITER ;
Ejecución:
CALL transaccion2(); SELECT @p1, @p2, @p3, @p4
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.