【问题标题】:Detecting errors to decide whether to rollback or commit检测错误以决定是回滚还是提交
【发布时间】:2009-10-02 13:54:15
【问题描述】:

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

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

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

我总是可以通过切换到更高级别的语言、打开连接并运行每个语句并检查错误来解决问题,但如果可能的话,我希望避免使用更多的制作代码。

【问题讨论】:

    标签: transactions postgresql


    【解决方案1】:

    如果您使用的是 psql,是否可以使用 -1 命令行选项,并使用以下命令开始您的文件:

    \设置 ON_ERROR_STOP

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

    【讨论】:

    • err... 那应该是:\set ON_ERROR_STOP 不确定额外的 * 是从哪里来的。
    猜你喜欢
    • 2012-04-19
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    相关资源
    最近更新 更多