Producent oprogramowania 

producent oprogramowania internetowego 

Zaawansowane constrainty w PostgreSQL

2009-09-16

CHECK

CHECK to prosty constraint pozwalany na sprawdzanie jakiegoś warunku. Nie wiem, jak jest to naprawdę wewnętrznie zaimplementowane w PostgreSQL, ale wydaje mi się, że NOT NULL może być właśnie takich checkiem. Oto przykład definicji takiego constrainta:

ALTER TABLE posts ADD CONSTRAINT valid_post_type CHECK (type in ('Rumor', 'NewsArticle'))

Jak widać sprawdzamy, czy pole type tabeli posts zawiera się w tablicy dopuszczalnych wartości. Zastosowanie takiego konkretnego constrainta jest oczywiste - zapobiega on istnieniu rekordów nienależących do istniejących podklas w modelu STI (które mogłyby powstać np. w wyniku usunięcia jakiejś podklasy albo ręcznych zmian w bazie