PostgreSQL存储过程中怎么利用BEGIN块处理事务


PostgreSQL存储过程中怎么利用BEGIN块处理事务,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、用BEGIN块模拟随便建个表:存储过程如下:测试:可以看到,内嵌BEGIN块中的INSERT操作并没有生效。2、PL/pgSQL如何实现块定义在pl_gram.y中,有兴趣可以自己去看,块的执行代码位于 src/pl/plpgsql/src/pl_exec.c。只有当块定义有EXCEPTION部分,才会出现创建子事务的动作,否则(它对应的else分支内)只会当做普通语句处理。抛出例外时,就把这个子事务会滚掉。而如果不抛出例外,而是WARNING或者NOTICE之类,也不会引起它的回滚,尝试一下就知道。PG怎么知道要不要回滚,关键 香港云主机在PG_TRY,这个说起来话长,暂时了解到这里足够。3、没有EXCEPTION处理会怎样去掉例外处理部分结果什么都没有,因为它没有启用子事务,所以会全部回滚。4、神奇的PG_TRY和PG_CATCH它们用到的是sigsetjmp,PG中很多地方用到它,了解这个可能需要一定的汇编语言知识,也需要了解错误抛出机制,有机会再详细讲。看完上述内容,你们掌握PostgreSQL存储过程中怎么利用BEGIN块处理事务的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注开发云行业资讯频道,感谢各位的阅读!

相关推荐: nacos address中postCluster的原理及作用是什么

本篇内容介绍了“nacos address中postCluster的原理及作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本文主要研究一下nacos a…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/06 08:44
下一篇 08/06 08:44

相关推荐