gpt4 book ai didi

错误处理程序无法正常工作的 mysql 回滚

转载 作者:行者123 更新时间:2023-11-29 00:40:11 27 4
gpt4 key购买 nike

我只是构建了一个存储过程来测试 mysql 中的事务。

但不知何故它不起作用。

这是我的代码:

USE `test`;
DROP procedure IF EXISTS `testTran`;
DELIMITER $$
USE `test`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `testTran`()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION rollback;
START TRANSACTION;
INSERT INTO `test`.`books`(`name`,`number`) VALUES ('asd', 20);
ALTER TABLE `test`.`books` ADD COLUMN `name` VARCHAR(45) NULL AFTER `number` ;
COMMIT;
END$$
DELIMITER ;

在事务内部,第二个命令是创建一个将失败的存在列。我期望的是第一个插入将回滚。但实际上,它不是。插入确实有效。

有人能帮忙吗?

最佳答案

为了使用事务,您需要将表转换为事务表,如 InnoDB。

您可以选择使用 SAVEPOINT 回滚存储过程所做的更改。

DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK TO identifier;

SAVEPOINT identifier;

START TRANSACTION;

INSERT INTO `test`.`books`(`name`,`number`) VALUES ('asd', 20);
ALTER TABLE `test`.`books` ADD COLUMN `name` VARCHAR(45) NULL AFTER `number` ;

COMMIT;

关于错误处理程序无法正常工作的 mysql 回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12594391/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com