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 ;
トランザクション内で、2番目のコマンドは失敗するexist列を作成することです。私が期待しているのは、最初の挿入がロールバックになることです。しかし実際にはそうではありません。インサートは機能します。
誰か助けてもらえますか?