我喜欢在我的 ~/.psqlrc
中包含这个:
\set autocommit off
我也喜欢在我的 filename.sql
脚本的顶部:
BEGIN;
...以防这些脚本由使用自动提交的其他人运行。
但是,这会发出警告:
WARNING: there is already a transaction in progress
如何关闭那些烦人的警告?是否有某种BEGIN IF NOT ALREADY BEGUN
命令?
最佳答案
您的两个设置相互矛盾。
如果您在 psql
中启用自动提交模式,您的脚本应该如下所示:
-- statement 1
-- statement 2
...
COMMIT;
-- statement 3
...
COMMIT;
那是因为自动提交模式会自动在第一条语句之前和 COMMIT
或 ROLLBACK
之后的每个语句之前添加一个 BEGIN
。
那是因为 PostgreSQL 没有自动提交模式,所以 psql
是“伪造的”。
现在,如果您的脚本以 BEGIN
开头,这将导致两个 BEGIN
紧接在一起,这将导致观察到的警告。
也许最好用
开始你的脚本\set autocommit on
确保一切一致。
关于postgresql - 自动提交关闭,开始并警告正在进行的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53528702/