在mysql数据库中过程处置一个操作时呈现错误,不克不及完当作这个使命时,怎么解决数据库的数据回到以前状况呢?下面分享一个mysql事务的回滚操作。我写的经验对你进修mysql有帮忙的话,给我投票、点赞或者保藏!
1数据库存储过程的动态语句
1数据库怎么备份和恢复数据
1数据库对数据的加密于解密
登录mysql,在test数据库中新建一个表,输入数据:
Create Table
CREATE TABLE `shoufei` ( `id` int(11) NOT NULL AUTO_INCREMENT, `shijian` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `xiangmu` varchar(20) NOT NULL, `jiage` float NOT NULL, `shuliang` int(11) NOT NULL, `jine` float DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
在test数据库中成立一个“shiwu”的过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `shiwu`()
BEGIN
END$$
在过程中界说sql语句的异常处置,若是发生异常就回滚到以前数据,而且退出当前语句块(begin end)。
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
过程起头事务:START TRANSACTION;
在事务中把id=2的记实点窜为id=1,本家儿键独一性会发生错误,直接退出begin-end.
UPDATE shoufei SET id=1 WHERE id=2;
接下来提交事务,若是提交当作功换回一个成果集'提交当作功!',:
COMMIT;
SELECT '提交当作功!';
执行过程:call shiwu();
点窜数据时有错误,sql异常执行回滚ROLLBACK。
把点窜数据改为:
UPDATE shoufei SET id=6 WHERE id=2;
再执行过程,事务当作功执行,把id改为6.
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!