2016-09-29 4 views
2
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; 

diese Transaktion auszuführen Ich brauche eine Prozedur zu erstellen und als nächstes nennen es (mytestproc), wie kann ich das ändern es (CREATE PROCEDURE) ohne Verwendung Prozedur auszuführen, einfach von Anfang bis Ende laufen?Wie Transaktion auszuführen, ohne dass ein Verfahren in MySQL erstellen

Danke.

Antwort

0

Bitte versuchen Sie dies:

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 
Verwandte Themen