Noam Kremen Asked: 2013-01-04 13:45:24 +0800 CST2013-01-04 13:45:24 +0800 CST 2013-01-04 13:45:24 +0800 CST 退出psql中的\e编辑器后如何防止查询执行? 772 是否有一个选项可以更改 psql \e 开关的“退出外部编辑器 -> 查询自动运行”行为?(除了故意破坏查询语法)。 postgresql psql 3 个回答 Voted Best Answer Erwin Brandstetter 2013-01-04T16:06:28+08:002013-01-04T16:06:28+08:00 不要添加分号( ;)。我在这里引用有关\eor\edit元命令的手册: 然后根据 psql 的正常规则重新解析查询缓冲区的新内容,将整个缓冲区视为一行。任何完整的查询都会立即执行;也就是说,如果查询缓冲区包含分号或以分号结尾,则执行该点之前的所有内容并将其从查询缓冲区中删除。查询缓冲区中剩余的任何内容都会重新显示。键入分号或\g发送它,或 \r通过清除查询缓冲区来取消它。 需要明确的是:只有最后没有以分号终止的语句不被执行。要不执行任何操作,请确保最后一条语句之前没有完整的语句。即根本没有分号。 不过,这真的很不满意。看到这个后续: psql \e 的鲁莽行为 .. 这导致 Laurenz Albe 做出了一些改进,生活在 psql 14 或更高版本中。 marcos 2015-02-02T09:31:09+08:002015-02-02T09:31:09+08:00 您始终可以在查询前加上 postgres 注释字符串: --select foo from bar; 并且查询不会运行,但可以在 psql 截止日期历史缓冲区中进行编辑。 DigitalTheo 2015-05-23T04:53:45+08:002015-05-23T04:53:45+08:00 如果您有很多请求和一些分号,请使用 Transaction : 在 psql 打开编辑器模式下\e: -- at start of edited text BEGIN TRANSACTION; -- ... your requests here -- save exit 回到 psql :您的请求已执行,但未写入更改: 如果一切正常,请使用以下命令保存更改: COMMIT; 否则如果您有错误或想取消: ROLLBACK;
不要添加分号(
;
)。我在这里引用有关\e
or\edit
元命令的手册:需要明确的是:只有最后没有以分号终止的语句不被执行。要不执行任何操作,请确保最后一条语句之前没有完整的语句。即根本没有分号。
不过,这真的很不满意。看到这个后续:
.. 这导致 Laurenz Albe 做出了一些改进,生活在 psql 14 或更高版本中。
您始终可以在查询前加上 postgres 注释字符串:
并且查询不会运行,但可以在 psql 截止日期历史缓冲区中进行编辑。
如果您有很多请求和一些分号,请使用 Transaction :
在 psql 打开编辑器模式下
\e
:回到 psql :您的请求已执行,但未写入更改:
如果一切正常,请使用以下命令保存更改:
否则如果您有错误或想取消: