主页 > 开源代码  > 

PostgreSQL如何关闭自动commit

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 等),以确保数据一致性。 锁争用:长时间未提交的事务可能会导致锁争用,影响其他会话的性能。 资源占用:未提交的事务会占用数据库资源,直到提交或回滚。
标签:

PostgreSQL如何关闭自动commit由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“PostgreSQL如何关闭自动commit