我试图通过在文件中生成一系列SQL命令来提供给psql
进行处理,从而尽可能地保持懒惰。简而言之,我正在从外部源(已经完成,通过COPY)加载一系列导入表,然后在最后一步中,删除/更新/插入主表中的记录(这在功能上也是如此)。 / p>
阻止我成功(并且能够通过shell脚本中的一系列命令执行所有操作)唯一的事情是,有时操作具有参照完整性错误,因此我必须回滚所有内容,直到来源可以被识别和纠正。
那么有什么方法可以从psql
处理的脚本中知道是否发生了错误并执行了回滚?如果没有错误,请提交。
我总是可以通过切换到更高级别的语言,打开连接并运行每个语句并检查错误来解决问题,但这只是我想要尽可能避免的所有make-work代码。
答案 0 :(得分:2)
如果您正在使用psql,可以使用-1命令行选项,并使用以下命令启动文件:
\设置ON_ERROR_STOP
这应该将整个会话包装在一个事务中,并在遇到错误时立即保释。