mysql事务的回滚

在mysql数据库中过程处置一个操作时呈现错误,不克不及完当作这个使命时,怎么解决数据库的数据回到以前状况呢?下面分享一个mysql事务的回滚操作。我写的经验对你进修mysql有帮忙的话,给我投票、点赞或者保藏!

1数据库存储过程的动态语句

1数据库怎么备份和恢复数据

1数据库对数据的加密于解密

东西/原料

  • mysql5.6
  • sqlyog

方式/步调

  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

  2. 2

    在test数据库中成立一个“shiwu”的过程:

    CREATE DEFINER=`root`@`localhost` PROCEDURE `shiwu`()

    BEGIN

        END$$

  3. 3

    在过程中界说sql语句的异常处置,若是发生异常就回滚到以前数据,而且退出当前语句块(begin end)。

    DECLARE EXIT HANDLER FOR SQLEXCEPTION   ROLLBACK;

  4. 4

    过程起头事务:START TRANSACTION;

  5. 5

    在事务中把id=2的记实点窜为id=1,本家儿键独一性会发生错误,直接退出begin-end.

    UPDATE shoufei SET id=1 WHERE id=2;

  6. 6

    接下来提交事务,若是提交当作功换回一个成果集'提交当作功!',:

    COMMIT;

    SELECT '提交当作功!';

  7. 7

    执行过程:call shiwu();

    点窜数据时有错误,sql异常执行回滚ROLLBACK。

  8. 8

    把点窜数据改为:

    UPDATE shoufei SET id=6 WHERE id=2;

  9. 9

    再执行过程,事务当作功执行,把id改为6.

  • 发表于 2019-02-14 21:39
  • 阅读 ( 1098 )
  • 分类:其他类型

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
admin
admin

0 篇文章

作家榜 »

  1. xiaonan123 189 文章
  2. 汤依妹儿 97 文章
  3. luogf229 46 文章
  4. jy02406749 45 文章
  5. 小凡 34 文章
  6. Daisy萌 32 文章
  7. 我的QQ3117863681 24 文章
  8. 华志健 23 文章

联系我们:uytrv@hotmail.com 问答工具