Jeśli chcesz zwrócić listę wszystkich CHECK
ograniczenia, które zostały wyłączone w bazie danych SQL Server, możesz uruchomić poniższy kod T-SQL.
Przykład 1 — Wyłączone ograniczenia kontrolne dotyczące powrotu
To zapytanie zwraca tylko wyłączone CHECK
ograniczenia w aktualnej bazie danych. Zwraca nazwę ograniczenia, nazwę tabeli, do której jest stosowane, oraz definicję ograniczenia.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', definition FROM sys.check_constraints WHERE is_disabled = 1;
Wynik:
+----------------+-----------------+-------------------------------+ | Table | Constraint | definition | |----------------+-----------------+-------------------------------| | ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+-------------------------------+
To wysyła zapytanie do sys.check_constraints
widok systemu. Wiemy, że zwraca tylko wyłączone ograniczenia, ponieważ WHERE
klauzula określa tylko wiersze, które mają is_disabled
kolumna ustawiona na 1
.
Jeśli chcesz zwrócić wszystkie włączone CHECK
ograniczenia, po prostu zmień 1
do 0
.
Przykład 2 – Zwróć wszystkie ograniczenia kontrolne
Następujące zapytanie zwraca wszystkie CHECK
ograniczenia dla bieżącej bazy danych (nie tylko te wyłączone). Tym razem zwracam is_disabled
kolumna w celu wykazania, skąd poprzednie zapytanie otrzymało swoją wartość:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints;
Wynik:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
Dołączyłem również is_not_trusted
kolumna w tym zapytaniu. Warto pamiętać o tej wartości, ponieważ ograniczenie może pozostać niezaufane nawet po ponownym włączeniu. Aby uzyskać szczegółowe omówienie (i przykłady) tej flagi, zobacz Co powinieneś wiedzieć o funkcji NOCHECK podczas włączania ograniczenia CHECK w SQL Server.