CHECK pozwala określić, że w danej kolumnie ma być zapisywana tylko taka wartość, która spełnia określony warunek, np wprowadzona liczba ma być większa niż 10.
CREATE TABLE Test (ID INT IDENTITY PRIMARY KEY, Value INT CONSTRAINT Test_Value CHECK (Value>10) ) GOJak można zmienić zdefiniowany tu warunek, jeżeli np będziesz wymagał aby Value było >20?Niestety nie masz do dyspozycji polecenia ALTER CHECK. Należy się posłużyć poleceniem ALTER TABLE i to na dodatek dwa razy. Raz aby usunąć poprzedni CHECH, a drugi raz aby go na nowo załoćyć:
Usunięcie CHECK-a
ALTER TABLE TestDROP CONSTRAINT Test_Value
I ponowne utworzenie:
ALTER TABLE TEST WITHADD CONSTRAINT Test_Value CHECK (Value>20)
No cóż, tworząc po raz kolejny CHECK-a możesz doświadczyć pewnych problemów:
Msg 547, Level 16, State 0, Line 1The ALTER TABLE statement conflicted with the CHECK constraint „Test_Value”. The conflict occurred in database „Test”, table „dbo.Test”, column 'Value’.
Zazwyczaj oznacza to, że w tabeli masz aktualnie dane nie spełniające tego warunku, w naszym przypadku liczby z zakresu 11-20. Co z tym zrobić możesz przeczytać tutaj
A o CONSTRAINACH i związanych z nimi przygodach opowiada kurs 6232. Zapraszam na autoryzowane szkolenia Microsoft w bit Polska w Opolu, Katowicach i Warszawie.