sql >> Databáze >  >> RDS >> Sqlserver

Jak vrátit všechna zakázaná omezení CHECK v SQL Server (příklad T-SQL)

Pokud potřebujete vrátit seznam všech CHECK omezení, která byla zakázána v databázi SQL Server, můžete spustit kód T-SQL níže.

Příklad 1 – Vrátit pouze deaktivovaná omezení CHECK

Tento dotaz vrací pouze zakázaný CHECK omezení v aktuální databázi. Vrátí název omezení, název tabulky, na kterou se vztahuje, a definici omezení.

SELECT 
  OBJECT_NAME(parent_object_id) AS 'Table',
  name AS 'Constraint',
  definition
FROM sys.check_constraints
WHERE is_disabled = 1;

Výsledek:

+----------------+-----------------+-------------------------------+
| Table          | Constraint      | definition                    |
|----------------+-----------------+-------------------------------|
| ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate])      |
| Occupation     | chkJobTitle     | ([JobTitle]<>'Digital Nomad') |
+----------------+-----------------+-------------------------------+

Tím se dotazuje sys.check_constraints systémový pohled. Víme, že vrací pouze deaktivovaná omezení, protože WHERE klauzule specifikuje pouze řádky, které mají is_disabled sloupec nastaven na 1 .

Pokud chcete vrátit všechny povolené CHECK omezení, jednoduše změňte 1 na 0 .

Příklad 2 – Vrátit všechna omezení CHECK

Následující dotaz vrátí vše CHECK omezení pro aktuální databázi (nejen ta zakázaná). Tentokrát vracím is_disabled za účelem demonstrovat, odkud předchozí dotaz získal svou hodnotu:

SELECT 
  OBJECT_NAME(parent_object_id) AS 'Table',
  name AS 'Constraint',
  is_disabled, 
  is_not_trusted
FROM sys.check_constraints;

Výsledek:

+----------------+-----------------+---------------+------------------+
| Table          | Constraint      | is_disabled   | is_not_trusted   |
|----------------+-----------------+---------------+------------------|
| ConstraintTest | chkPrice        | 0             | 0                |
| ConstraintTest | chkValidEndDate | 1             | 1                |
| ConstraintTest | chkTeamSize     | 0             | 0                |
| Occupation     | chkJobTitle     | 1             | 1                |
+----------------+-----------------+---------------+------------------+

Zahrnul jsem také is_not_trusted sloupec v tomto dotazu. Je rozumné mít na paměti tuto hodnotu, protože omezení může zůstat nedůvěryhodné i poté, co bylo znovu aktivováno. Podrobnou diskuzi (a příklady) tohoto příznaku naleznete v části Co byste měli vědět o WITH NOCHECK při povolování omezení CHECK v SQL Server.


  1. Jak zkontrolovat, které zámky drží na stole

  2. Prizmatické vztahy

  3. Jak mohu správně použít objekt PDO pro parametrizovaný dotaz SELECT

  4. Jak vytvořit databázi MySQL pomocí rozhraní příkazového řádku (CLI)