当前位置: 首页 > 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 等),以确保数据一致性。
锁争用:长时间未提交的事务可能会导致锁争用,影响其他会话的性能。
资源占用:未提交的事务会占用数据库资源,直到提交或回滚。
http://www.dtcms.com/a/21533.html

相关文章:

  • 基于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 函数匹配
  • 车载音频架构图详解(精简)
  • 2025-02-16 学习记录--C/C++-PTA 7-20 打印九九口诀表
  • C++笔记之类型大小、变量大小,vector与string在栈上内存、堆上内存和总内存的关系
  • PHP培训机构教务管理系统小程序
  • 八大排序——简单选择排序
  • 提示工程实现数据质量评估
  • matlab飞行姿态pid控制
  • 工业级推荐系统冷启动解决方案:基于元迁移学习与动态知识图谱的混合架构设计与实践
  • 【go语言规范】Gopherfest 2015 | Go Proverbs with Rob Pike的 总结
  • 深入理解 Shell 脚本执行方式:`source`、`./xx.sh`、`bash xx.sh` 和 `sh xx.sh`