簡體   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