当前位置:   article > 正文

使用存储过程完成事务回滚_存储过程怎么回滚

存储过程怎么回滚

表结构如下:

建立存储过程

  1. DELIMITER $$
  2. CREATE PROCEDURE p1( OUT p_return_code INTEGER )
  3. BEGIN
  4. DECLARE EXIT HANDLER FOR SQLEXCEPTION -- 捕捉错误,如果是sql错误就执行里面的
  5. BEGIN
  6. -- ERROR
  7. SET p_return_code = 1; -- 返回值1,说明sql错误
  8. ROLLBACK; -- 回滚数据
  9. END;
  10. DECLARE EXIT HANDLER FOR SQLWARNING -- 捕捉错误,如果是sql警告就执行里面的
  11. BEGIN
  12. -- WARNING
  13. SET p_return_code = 2; -- 返回值2,说明出现sql警告
  14. ROLLBACK; -- 回滚数据
  15. END;
  16. START TRANSACTION; -- 开始事务
  17. -- 执行sql语句
  18. UPDATE person SET pointps = pointps - 'abc' WHERE personName = '张三';
  19. UPDATE person SET pointps = pointps + 500 WHERE personName = '李四';
  20. COMMIT; -- 提交
  21. -- SUCCESS
  22. SET p_return_code = 0; -- 返回0说明成功
  23. END $$
  24. DELIMITER ;

调用存储过程:

CALL p1(@u);

查询调用结果:

SELECT @u;

再回到数据库刷新,发现数据未发生变化,发生了数据回滚。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/815357?site
推荐阅读
相关标签
  

闽ICP备14008679号