当前位置: 首页 > news >正文

PostgreSQL如何关闭自动commit

PostgreSQL如何关闭自动commit

在 PostgreSQL 中,默认情况下,每个 SQL 语句都会自动提交(即 AUTOCOMMIT 是开启的)。如果希望关闭自动提交,以便手动控制事务的提交和回滚,可以通过以下方法实现。

1 使用 BEGIN 或 START TRANSACTION 手动控制事务

PostgreSQL 中,可以通过显式地使用 BEGIN 或 START TRANSACTION 来开启一个事务块。在事务块中,所有的修改操作(如 INSERT、UPDATE、DELETE)都不会自动提交,直到显式地执行 COMMIT 或 ROLLBACK。

示例

white=# \d yewu1.test10
                      Table "yewu1.test10"
 Column |         Type          | Collation | Nullable | Default 
--------+-----------------------+-----------+----------+---------
 id     | integer               |           |          | 
 name   | character varying(20) |           |          | 

white=# begin;
BEGIN
white=*# insert into yewu1.test10 values(1,'haha1');
INSERT 0 1
white=*# commit;
COMMIT

white=# --如果不执行begin,再执行commit的话,会提示已无事务
white=# 
white=# insert into yewu1.test10 values(2,'haha2');
INSERT 0 1
white=# commit;
WARNING:  there is no transaction in progress
COMMIT

在 BEGIN 和 COMMIT 之间的所有操作都属于同一个事务。
如果在事务中发生错误或显式执行 ROLLBACK,所有修改都会被撤销。

2 使用 SET AUTOCOMMIT 关闭自动提交

PostgreSQL 的某些客户端工具(如 psql)中,可以通过 SET AUTOCOMMIT 命令关闭自动提交。

在 psql 中关闭自动提交
启动 psql 并连接到数据库。
执行以下命令关闭自动提交:

 \set AUTOCOMMIT off

示例

white=# \set AUTOCOMMIT off
white=# insert into yewu1.test10 values(4,'haha4');
INSERT 0 1
white=*# commit;
COMMIT
white=#
关闭 AUTOCOMMIT 后,每个 SQL 语句都需要显式地提交或回滚。

3 注意事项

事务隔离级别:在手动控制事务时,注意事务的隔离级别(如 READ COMMITTED、REPEATABLE READ 等),以确保数据一致性。
锁争用:长时间未提交的事务可能会导致锁争用,影响其他会话的性能。
资源占用:未提交的事务会占用数据库资源,直到提交或回滚。

相关文章:

  • 基于Python的Flask微博话题舆情分析可视化系统
  • SaaS 平台开发要点
  • javascript-es6 (四)
  • 【NLP251】命名实体实战(基于Transformer分类)
  • 【BUUCTF逆向题】[ACTF新生赛2020]Splendid_MineCraft(SMC代码混淆)
  • 【强化学习】强化学习(Reinforcement Learning, RL)详解
  • SpringBoot+uniApp日历备忘录小程序系统 附带详细运行指导视频
  • 459重复的子字符串(substr)
  • Word中的文档信息域
  • Java语言介绍
  • cap2:1000分类的ResNet的TensorRT部署指南(python版)
  • Linux:深入了解进程信号(上)
  • (7/100)每日小游戏平台系列
  • 力扣做题记录 (二叉树)
  • MySQL 插入替换语句(replace into statement)
  • 配置Open-R1,评测第三方蒸馏模型的性能1
  • 淘宝商品评论API接口概述,json数据示例返回
  • 高等代数笔记—欧几里得空间、双线性函数
  • Java运维实战:问题定位-CPU突增排查
  • C++ Primer 函数匹配
  • 此前显示售罄的火车票“五一”前大量放出来了?12306回应
  • 《探秘海昏侯国》数字沉浸特展亮相首届江西文化旅游产业博览交易会
  • 如何反击右翼思潮、弥合社会分裂:加拿大大选镜鉴
  • 80后共青团云南省委副书记许思思已任迪庆州委副书记
  • 民生访谈|规范放生活动、提升供水品质……上海将有这些举措
  • 暗蓝评《性别打结》丨拆解性别之结需要几步?