繁体   English   中英

PostgreSQL断言约束

[英]postgresql assert constraint

有没有一种方法可以在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)。 如果我可以指定约束违例的类型,那将是有帮助的。

问题的第二部分:如何将这个(或类似的)包装到宏/自定义断言函数中?

对于特定的约束违例,有更多特定的SQL状态(请参阅文档 ),但是从本质上讲,这是最好的选择,除非您想解析错误消息(这不是一个好主意)。

您可能还想看看PL / pgSQL中的ASSERT语句 ,该语句可用于检查条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM