Przejdź do zawartości

Procedury składowane w PostgreSQL/Ograniczenia sprawdzające

Z Wikibooks, biblioteki wolnych podręczników.

Procedury składowane mogą być bez przeszkód używane w ograniczeniach sprawdzających (CHECK), zarówno w tabelach, jak i dziedzinach. Należy jedynie pamiętać, że typem wartości wyrażenia w CHECK musi być typ logiczny, więc jeśli używana będzie tylko funkcja, to musi ten typ zwracać.

Dopuszczalne są dowolne funkcje, nawet takie, które modyfikują dane.

Przykład

[edytuj]
CREATE FUNCTION sprawdz_napis(napis text, min_dlugosc integer) RETURNS boolean AS $$
    BEGIN
        RAISE NOTICE '%, %', min_dlugosc, napis;
        IF napis IS NULL THEN
            -- pusty napis
            RETURN false; 
        ELSIF length(napis) < min_dlugosc THEN
            -- za krótki
            RETURN false; 
        ELSE
            RETURN true;
        END IF;
    END;
$$ LANGUAGE 'plpgsql' IMMUTABLE;

CREATE TABLE tabela (
    -- ...
    dlugosc integer,
    napis    text CHECK(sprawdz_napis(napis, dlugosc))
    -- ...
);