Als u een lijst van alle CHECK
. wilt retourneren beperkingen die zijn uitgeschakeld in een SQL Server-database, kunt u de onderstaande T-SQL-code uitvoeren.
Voorbeeld 1 – Alleen retourneren uitgeschakeld CHECK-beperkingen
Deze zoekopdracht retourneert alleen de uitgeschakelde CHECK
beperkingen in de huidige database. Het retourneert de naam van de beperking, de naam van de tabel waarop deze is toegepast en de definitie van de beperking.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', definition FROM sys.check_constraints WHERE is_disabled = 1;
Resultaat:
+----------------+-----------------+-------------------------------+ | Table | Constraint | definition | |----------------+-----------------+-------------------------------| | ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+-------------------------------+
Dit vraagt de sys.check_constraints
systeem bekijken. We weten dat het alleen uitgeschakelde beperkingen retourneert omdat de WHERE
clausule specificeert alleen rijen met de is_disabled
kolom ingesteld op 1
.
Als u alle ingeschakelde wilt retourneren CHECK
beperkingen, verander gewoon de 1
naar 0
.
Voorbeeld 2 – Alle CHECK-beperkingen retourneren
De volgende zoekopdracht retourneert alle CHECK
beperkingen voor de huidige database (niet alleen de uitgeschakelde). Deze keer retourneer ik de is_disabled
kolom om aan te tonen waar de vorige zoekopdracht zijn waarde vandaan haalde:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints;
Resultaat:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
Ik heb ook de is_not_trusted
kolom in deze query. Het is verstandig om rekening te houden met deze waarde, omdat een beperking onbetrouwbaar kan blijven, zelfs nadat deze opnieuw is ingeschakeld. Voor een gedetailleerde bespreking (en voorbeelden) van deze vlag, zie Wat u moet weten over WITH NOCHECK bij het inschakelen van een CHECK-beperking in SQL Server.