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.