Możesz użyć poniższego kodu, aby wyłączyć wszystkie CHECK
i ograniczenia klucza obcego dla określonej tabeli w SQL Server.
Wystarczy zastąpić TableName
z nazwą odpowiedniej tabeli.
ALTER TABLE NazwaTabeli NOCHECK CONSTRAINT ALL
Poniżej znajduje się przykład, w którym to robię, a następnie sprawdzam wynik.
Przykład 1 – Przejrzyj ograniczenia
Najpierw rzucę okiem na bieżące CHECK
i ograniczenia klucza obcego w bazie danych, aby sprawdzić, czy są włączone lub wyłączone.
SELECT OBJECT_NAME(parent_object_id) AS 'Tabela', nazwa AS 'Ograniczenie', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trustedFROM sys.check_constraints;Wynik:
+----------------+-----------------+---------------- ----+------------------+| Tabela | Ograniczenie | is_disabled | nie jest_zaufany ||----------------+-----------------+------------- ---+------------------|| Test Ograniczeń | chkCena | 0 | 0 || Test Ograniczeń | chkValidEndDate | 0 | 0 || Test Ograniczeń | chkTeamSize | 0 | 0 || Zawód | chkTytułZadania | 0 | 0 |+----------------+-----------------+------------ ---+------------------+Tak więc obecnie są cztery
CHECK
ograniczenia w bazie danych, z których trzy dotycząConstraintTest
tabela.Widzimy, że wszystkie ograniczenia są włączone, ponieważ jest_wyłączone jest ustawiony na 0 .
Przykład 2 – Wyłącz ograniczenia
Teraz wyłączę wszystkie ograniczenia dla
ConstraintTest
tabela:ALTER TABLE ConstraintTest NOCHECK CONSTRAINT ALL;Przykład 3 – Sprawdź wynik
Teraz uruchamiam to samo zapytanie z pierwszego przykładu, aby zobaczyć wynik.
SELECT OBJECT_NAME(parent_object_id) AS 'Tabela', nazwa AS 'Ograniczenie', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trustedFROM sys.check_constraints;Wynik:
+----------------+-----------------+---------------- ----+------------------+| Tabela | Ograniczenie | is_disabled | nie jest_zaufany ||----------------+-----------------+------------- ---+------------------|| Test Ograniczeń | chkCena | 1 | 1 || Test Ograniczeń | chkValidEndDate | 1 | 1 || Test Ograniczeń | chkTeamSize | 1 | 1 || Zawód | chkTytułZadania | 0 | 0 |+----------------+-----------------+------------ ---+------------------+Zgodnie z oczekiwaniami wszystkie trzy ograniczenia dla ConstraintTest tabela została wyłączona (ponieważ is_disabled kolumna jest ustawiona na 1 dla tych ograniczeń).
Zauważ, że jest_nie_zaufany kolumna jest również ustawiona na 1 . Jest to ważna uwaga, zwłaszcza jeśli zamierzasz ponownie włączyć którekolwiek z wyłączonych ograniczeń.
Zobacz, co powinieneś wiedzieć o funkcji NOCHECK podczas włączania ograniczenia wyboru w programie SQL Server, aby uzyskać informacje na temat przywracania zaufania podczas ponownego włączania ograniczeń. Informacje zawarte w tym artykule dotyczą również kluczy obcych.
Wyłącz ograniczenia indywidualnie
Jeśli nie chcesz wyłączać wszystkich ograniczeń w tabeli, możesz je wyłączyć pojedynczo. Zobacz Jak wyłączyć ograniczenie CHECK w SQL Server i Jak wyłączyć klucz obcy w SQL Server.
Ponownie włącz ograniczenia
Jeśli chcesz ponownie włączyć wszystkie ograniczenia dla tabeli, zobacz Jak włączyć wszystkie ograniczenia sprawdzania i klucza obcego dla tabeli.
Jeśli chcesz ponownie włączyć je pojedynczo, zobacz Jak włączyć ograniczenie wyboru w SQL Server i Jak włączyć klucz obcy w SQL Server.