检测错误以决定是回滚还是提交

时间:2009-10-02 13:54:15

标签: transactions postgresql

我试图通过在文件中生成一系列SQL命令来提供给psql进行处理,从而尽可能地保持懒惰。简而言之,我正在从外部源(已经完成,通过COPY)加载一系列导入表,然后在最后一步中,删除/更新/插入主表中的记录(这在功能上也是如此)。 / p>

阻止我成功(并且能够通过shell脚本中的一系列命令执行所有操作)唯一的事情是,有时操作具有参照完整性错误,因此我必须回滚所有内容,直到来源可以被识别和纠正。

那么有什么方法可以从psql处理的脚本中知道是否发生了错误并执行了回滚?如果没有错误,请提交。

我总是可以通过切换到更高级别的语言,打开连接并运行每个语句并检查错误来解决问题,但这只是我想要尽可能避免的所有make-work代码。

1 个答案:

答案 0 :(得分:2)

如果您正在使用psql,可以使用-1命令行选项,并使用以下命令启动文件:

\设置ON_ERROR_STOP

这应该将整个会话包装在一个事务中,并在遇到错误时立即保释。