有没有办法在PL / pgSQL中ASSERT
,但是对于异常而不是条件?即断言“违反X约束”将会发生。
我能得到的最接近的是:
DECLARE xc integer DEFAULT 0;
BEGIN
INSERT INTO [...];
RAISE EXCEPTION 'Should not make it this far';
EXCEPTION
WHEN integrity_constraint_violation THEN
RAISE NOTICE 'Caught expected integrity violation';
xc := xc + 1;
ASSERT ((SELECT xc) = 1);
END;
这样做(-ish)。如果我可以指定有用的约束违规类型。
问题的第二部分:我如何将此(或类似的)包装到宏/自定义断言函数中?
答案 0 :(得分:0)
针对特定约束违规有更多特定的SQL状态(请参阅the documentation),但基本上除非您要解析错误消息(这不是一个好主意),否则这是最好的
您可能还想查看PL / pgSQL中的ASSERT
statement,它可用于检查条件。