【问题标题】:Postgres Raise all Exception in the end of file executionPostgres在文件执行结束时引发所有异常
【发布时间】:2020-03-12 19:15:16
【问题描述】:
DO $$
BEGIN
  -- Check to make sure that event starts after users created
  IF EXISTS (
    SELECT users.id
    FROM event
    INNER JOIN users ON event.user_id::INT = users.id
    WHERE event.start > users.created
  )
  THEN
    RAISE NOTICE 'SUCCESSFUL %', now();
  ELSE
    RAISE EXCEPTION 'ERROR on % - All Event start timestamps must be created after users are created',now();
  END IF;

END $$;

这个例外是为了检查时间戳并且效果很好。但我想添加一个类似的条件和至少 3 个以上的异常条件。我现在想在最后返回异常。如果第一次检查失败,我不希望进程停止。我希望最终一次性提出所有失败的测试。我怎么做 ?我阅读了有关堆叠诊断的信息,但不知道它是否正确,或者我应该只使用 IF-else if 吗?

【问题讨论】:

    标签: sql postgresql exception plpgsql


    【解决方案1】:

    中断处理具有异常的性质,因此您不能简单地为此使用异常。

    您可以在一个(临时?)表中收集所有异常并最终将它们传达给客户端,或者将它们连接到一个大异常。

    您还可以将单个消息作为NOTICE 发出并在最后抛出异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      • 2011-03-01
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      相关资源
      最近更新 更多