Wyobraźmy sobie tabelę:
CREATE TABLE test (Id INT IDENTITY PRIMARY KEY, Value INT NOT NULL CONSTRAINT CHK_Test_Value CHECK (Value<=100))Jeżeli na chwilę chcesz wyłączyć CONSTRAINA CHECK zrób to tak:
ALTER TABLE test NOCHECK CONSTRAINT CHK_Test_ValueTeraz uda Ci się wstwić rekordy naruszające zasadę <=100.
Kiedy zechcesz włączyć CONSTRAINA spowrotem zrób to tak:
ALTER TABLE test CHECK CONSTRAINT CHK_Test_ValueUwaga, dane przy takim włączeniu CONSTRAINT nie będą sprawdzane, więc potencjalnie masz teraz w tabeli śmieci. Na dodatek jeżeli wykonasz:
SELECT * FROM sys.check_constraints WHERE name = 'CHK_Test_Value’to zobaczysz, że w kolumnie is_not_trusted jest wartość 1, czyli serwer nie ufa tabeli, że dane są w niej poprawne. Aby włączyć checka ze sprawdzeniem użyj polecenia:
ALTER TABLE test WITH CHECK CHECK CONSTRAINT CHK_Test_ValueTakie włączenie CONSTRAINT może się nie udać, gdy w tabeli masz niepoprawne dane, ale coś za coś. Musisz sam najpierw uporządkować tabelę.
Komentarze:
[…] pisałem w tym artykule możesz chwilowo (np. przed wykonaniem importu) wyłączyć constrainy. Dzięki temu import może […]