- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Is there a way to save, temporarily change, and then restore the value of the
psql
ON_ERROR_STOP
variable?
基本上,我希望在 psql
脚本中具有以下“道德等价物”:
save_on_error_stop=ON_ERROR_STOP
\unset ON_ERROR_STOP
ALTER TABLE foo DROP COLUMN bar; -- (for example)
\set ON_ERROR_STOP save_on_error_stop
ALTER TABLE foo ADD COLUMN bar;
要点是最后的 '\set'
命令实际上不会设置 ON_ERROR_STOP
除非之前已设置。
最佳答案
我认为不可能在单个 psql
session 中执行此操作。根据manual , 可以单独使用 \set
命令列出所有 psql
变量。
可以记住 shell 中的设置,但这会使整个事情变得无用,因为执行所需的一组查询以强制执行所需的 ON_ERROR_STOP
值要简单得多。
另一种方法是编写一个匿名代码块并DO
一些额外的逻辑来检测是否需要在添加列之前将其删除。
顺便说一句,紧接着删除和添加列的目的是什么?
如果只是为了确保不存在这样的列,这个DO
怎么样? block :
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_schema='public' AND table_name='foo'
AND column_name='bar')
THEN
EXECUTE format('ALTER TABLE %I.%I ADD %I text',
'public','foo','bar');
END IF;
END; $$;
如果您经常进行此类检查,也可以创建一个函数。
关于postgresql - 如何保存和恢复 ON_ERROR_STOP 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730762/
Is there a way to save, temporarily change, and then restore the value of the psql ON_ERROR_STOP var
我正在使用 PostgresOperator 创建一个任务,我想设置 ON_ERROR_STOP=1,有没有办法在 PostgresOperator 的参数中传递这个,或者我应该直接把它放在我的文件“
我正在维护一个 psql 脚本,我通常希望在它的任何部分失败时立即以非零退出代码中止。 所以我正在考虑去哪个地方 \set ON_ERROR_STOP on 在开头,或指示用户运行脚本 psql -
我是一名优秀的程序员,十分优秀!