postgresql - PostgreSQL - 隐式事务模拟
问题描述
我正在使用来自 RDS (AWS) 的 PostgreSQL 10。所以请注意,我没有完全的权限来做任何我想做的事情。
在 PostgreSQL 中,我有一些用 PL/pgSQL 编写的函数。
根据我在这些功能中的经验,我无法启动/提交/回滚事务。在一个DO
街区我也不能这样做。
那是对的吗?那么这背后的逻辑是什么......似乎PostgreSQL希望在现有事务的上下文中调用每个函数。正确的?
但是,如果我希望函数中的每个语句都在单独的(短)事务中执行,即具有类似于 AUTOCOMMIT = ON 的行为,该怎么办?
我发现了一些可能可以做到这一点的扩展,但我不确定。我不知道这是否相关。 https://www.postgresql.org/docs/10/ecpg-sql-set-autocommit.html
在不需要下载和安装额外的包/扩展的情况下,在 Postgres 中没有这样做的标准方法吗?
同样:我希望函数中的每个语句都在单独的(短)事务中执行,即具有类似于 AUTOCOMMIT = ON 的行为。
解决方案
一个函数中的所有语句都在同一个事务中运行,没有插件可以改变它。
您可以使用从 v11 开始的过程,但您仍然必须显式管理事务。
我怀疑最好的办法是在数据库客户端上运行你的函数,在那里你可以自动提交,而不是作为数据库中的一个函数。
推荐阅读
- ruby-on-rails - 如何在 VSCode 中使用 WSL 访问 windows 文件?
- python - 即使在python中提交后数据也没有插入sqlite3
- python - 更新烧瓶上的浏览器缓存
- macos - Docker 容器与 M5Atom 通信
- android - Wifi Direct P2P 无法在 Android 10+ 设备上运行,无法发现设备
- generics - DryIoC 将参数传递给基于泛型类型参数的开放泛型服务的构造函数
- python-3.x - python中的Minecraft数据包嗅探
- python - Django:如何在页面上显示来自特定类别的帖子
- java - Java FileInputStream.read() 跳过字节
- subplot - 在指定数量的行和列中绘制子图的问题