我有几个SQL脚本(alter、create、insert data、update等)。
我把它包装成一笔交易
SET AUTOCOMMIT = 0;
START TRANSACTION;
//code create, alter, insert...
COMMIT我以为它只有在成功的时候才会处理代码。但即使失败我也修改了表格。所以我必须恢复数据库才能再次运行脚本。
我试着用COMMIT代替ROLLBACK。但没什么用。
只有在成功之后才有办法得到改变吗?
发布于 2016-04-13 15:23:05
我发现这是不可能的。http://dev.mysql.com/doc/refman/5.7/en/cannot-roll-back.html
发布于 2016-04-13 15:04:39
在发生故障时尝试处理回滚错误:
DECLARE CONTINUE HANDLER FOR NOT FOUND
BEGIN
SET @error = 1;
SET @error_string = 'erreur de type NOT FOUND';
END;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
SET @error = 1;
SET @error_string = 'erreur de type SQLEXCEPTION';
END;
SET @error = 0;
SET @error_string = '';
-- start transact
START TRANSACTION;
//code ...
IF (@error <> 0) THEN
ROLLBACK;
//LEAVE MAj_DOC;
ELSE
commit;
END IF;
ENDhttps://stackoverflow.com/questions/36602041
复制相似问题