Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak zwrócić wszystkie wyłączone ograniczenia kontrolne w programie SQL Server (przykład T-SQL)

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Poznawanie różnych ograniczeń w SQL Server

  2. OR nie jest obsługiwany z instrukcją CASE w SQL Server

  3. Klauzula WHERE dotycząca typu danych SQL Server Text

  4. Jak TRY_CAST() działa w SQL Server

  5. Kiedy powinienem używać zmiennej tabeli a tabeli tymczasowej w serwerze sql?