SET autocommit=0;
DELIMITER$$
CREATE OR REPLACE PROCEDURE mytestproc()
BEGIN
DECLARE `_rollback` BOOL DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET `_rollback` = 1;
START TRANSACTION;
INSERT INTO tbl_campo
(alias,nombre,descripcion,codigo_usuario, fecha_actualizacion, fecha_creacion, fecha_eliminacion)
VALUES ('aliasxmp5','nombrexmp5','descxmp5',1, NOW(), NOW(), NULL);
REPLACE INTO tbl_campo_tabla_indicador_periodo
(codigo_campo,codigo_tabla_indicador_periodo,codigo_usuario,
fecha_actualizacion, fecha_creacion, fecha_eliminacion)
VALUES (last_insert_id(),9,1, NOW(), NOW(), NULL);
IF `_rollback` THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END$$
call mytestproc;
要执行此事务,我需要创建一个过程并接下来调用它(mytestproc),如何在不使用PROCEDURE(CREATE PROCEDURE)的情况下修改它来运行它,只需从BEGIN运行到END?
感谢。
答案 0 :(得分:0)
请试试这个:
DELIMITER $$
DROP PROCEDURE IF EXISTS `mytestproc`;
CREATE PROCEDURE `mytestproc`()
BEGIN
DECLARE `_rollback` BOOL DEFAULT 0;
Declare autocommit int default 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET `_rollback` = 1;
START TRANSACTION;
INSERT INTO tbl_campo
(alias,nombre,descripcion,codigo_usuario, fecha_actualizacion, fecha_creacion, fecha_eliminacion)
VALUES ('aliasxmp5','nombrexmp5','descxmp5',1, NOW(), NOW(), NULL);
REPLACE INTO tbl_campo_tabla_indicador_periodo
(codigo_campo,codigo_tabla_indicador_periodo,codigo_usuario,
fecha_actualizacion, fecha_creacion, fecha_eliminacion)
VALUES (last_insert_id(),9,1, NOW(), NOW(), NULL);
IF `_rollback` THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END