瑞士苏黎世 - 2020 年 11 月 2 日
今天发布了 pg_statement_rollback 的初始版本 v1.0。
pg_statement_rollback 是一个 PostgreSQL 扩展,用于添加服务器端事务,支持类似 Oracle 或 DB2 的语句级回滚。
如果在 SQL 语句执行过程中发生错误,该语句的所有更改都将被回滚。回滚的效果就好像该语句从未执行过一样。这个操作称为语句级回滚,具有以下特点:
在 PostgreSQL 中,当遇到错误时,事务将无法继续,并且事务中完成的所有工作都会被回滚。Oracle 或 DB2 在每次语句执行前都有隐式的保存点,允许回滚到语句失败前的状态。
目前 PostgreSQL 的语句级回滚实现是在客户端完成的。psql 有 \set ON_ERROR_ROLLBACK on,JDBC 在执行查询时遇到 SQL 异常时有 autorollback,psqlODBC 也有“语句级回滚”模式。这些实现的缺点是它们会通过发送 SAVEPOINT autosave 和 RELEASE SAVEPOINT autosave 来增加与服务器的通信,这可能会严重限制应用程序的吞吐量。
请参阅文档以获取该功能和扩展使用方法的完整描述。
pg_statement_rollback 是 LzLabs (https://www.lzlabs.com/) 的一个开放项目。欢迎为构建更好的工具做出贡献。您只需通过 GitHub 工具发送您的想法、功能请求或补丁。
链接