Ograniczenie CHECK służy do pilnowania integralności danych: przy INSERT i UPDATE serwer bazy odrzuci rekord, jeśli wyrażenie logiczne w CHECK nie będzie spełnione.
Wymaganie z treści brzmi: wartości rzeczywiste, dodatnie oraz mniejsze od 50. To oznacza ścisły przedział (0, 50), czyli warunki: stawka > 0 oraz stawka < 50.
Dlatego poprawny jest zapis CHECK (stawka>0 AND stawka<50.00). Operator AND wymusza spełnienie obu nierówności jednocześnie, więc 25.5 przejdzie, a 0, 50 i 60 zostaną odrzucone.
- CHECK (stawka>0 OR stawka<50.00) jest logicznie zbyt "luźny": wystarczy spełnić jeden warunek. Każda liczba ujemna spełnia stawka < 50, a każda liczba duża dodatnia spełnia stawka > 0, więc reguła praktycznie nie ogranicza danych.
- CHECK (stawka IN (0, 50.00)) nie opisuje zakresu, tylko zbiór dwóch dokładnych wartości; dodatkowo zawiera 0 i 50, które są zakazane przez wymóg "dodatnie" i "mniejsze od 50".
- CHECK (stawka BETWEEN 0 AND 50.00) bywa pułapką, bo BETWEEN jest inkluzywny: dopuszcza 0 oraz 50. To nie spełnia ścisłych nierówności (>0 i <50).
Wskazówka egzaminacyjna: zawsze sprawdź wartości brzegowe (tu: 0 i 50). To najszybciej ujawnia, czy użyty operator zakresu nie włącza końców przedziału.