我只是构建了一个存储过程来测试 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 ;
在事务内部,第二个命令是创建一个将失败的存在列。我期望的是第一个插入将是回滚。但实际上,并非如此。插入确实有效。
任何人都可以帮忙吗?