sql >> Database >  >> RDS >> Sqlserver

Hoe u alle beperkingen van CHECK &Foreign Key voor een tabel in SQL Server uitschakelt (T-SQL-voorbeelden)

U kunt de onderstaande code gebruiken om alle CHECK . uit te schakelen en externe-sleutelbeperkingen voor een specifieke tabel in SQL Server.

Vervang gewoon TableName met de naam van de toepasselijke tabel.

ALTER TABLE TableName NOCHECK CONSTRAINT ALL

Hieronder ziet u een voorbeeld waarin ik dit doe en vervolgens het resultaat controleer.

Voorbeeld 1 – Bekijk de beperkingen

Ik zal eerst even kijken naar de huidige CHECK en externe sleutelbeperkingen in de database, om te zien of ze al dan niet zijn ingeschakeld of uitgeschakeld.

SELECT OBJECT_NAME(parent_object_id) AS 'Table', naam AS 'Constraint', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trustedFROM sys.check_constraint;
 Resultaat:

+----------------+-----------------+----------- ----+------------------+| Tafel | beperking | is_disabled | is_not_trusted ||----------------+-----------------+------------ ---+------------------|| BeperkingTest | chkPrijs | 0 | 0 || BeperkingTest | chkValidEndDate | 0 | 0 || BeperkingTest | chkTeamSize | 0 | 0 || beroep | chkJobTitel | 0 | 0 |+----------------+-----------------+------------ ---+------------------+

Er zijn dus momenteel vier CHECK beperkingen in de database, waarvan er drie voor de ConstraintTest tafel.

We kunnen zien dat alle beperkingen zijn ingeschakeld omdat is_disabled is ingesteld op 0 .

Voorbeeld 2 – De beperkingen uitschakelen

Nu schakel ik alle beperkingen uit voor de ConstraintTest tafel:

WIJZIG TABEL ConstraintTest NOCHECK CONSTRAINT ALLES;

Voorbeeld 3 – Controleer het resultaat

Nu voer ik dezelfde query uit van het eerste voorbeeld om het resultaat te zien.

SELECT OBJECT_NAME(parent_object_id) AS 'Table', naam AS 'Constraint', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trustedFROM sys.check_constraint;
 Resultaat:

+----------------+-----------------+----------- ----+------------------+| Tafel | beperking | is_disabled | is_not_trusted ||----------------+-----------------+------------ ---+------------------|| BeperkingTest | chkPrijs | 1 | 1 || BeperkingTest | chkValidEndDate | 1 | 1 || BeperkingTest | chkTeamSize | 1 | 1 || beroep | chkJobTitel | 0 | 0 |+----------------+-----------------+------------ ---+------------------+

Zoals verwacht, alle drie de beperkingen voor de ConstraintTest tabel zijn uitgeschakeld (omdat de is_disabled kolom is ingesteld op 1 voor die beperkingen).

Merk op dat de is_not_trusted kolom is ook ingesteld op 1 . Dit is een belangrijke overweging, vooral als u van plan bent een van uw uitgeschakelde beperkingen opnieuw in te schakelen.

Zie Wat u moet weten over WITH NOCHECK bij het inschakelen van een CHECK-beperking in SQL Server voor informatie over het herstellen van vertrouwen wanneer u uw beperkingen opnieuw inschakelt. De informatie in dat artikel is ook van toepassing op externe sleutels.

Schakel de beperkingen afzonderlijk uit

Als u niet alle beperkingen in de tabel wilt uitschakelen, kunt u ze afzonderlijk uitschakelen. Zie Hoe u een CHECK-beperking in SQL Server uitschakelt en hoe u een externe sleutel in SQL Server uitschakelt.

Schakel de beperkingen opnieuw in

Als u alle beperkingen voor een tabel opnieuw moet inschakelen, raadpleegt u Hoe u ALLE CONTROLE- en Foreign Key-beperkingen voor een tabel inschakelt.

Als u ze afzonderlijk opnieuw moet inschakelen, raadpleegt u Een CONTROLE-beperking inschakelen in SQL Server en Een externe sleutel inschakelen in SQL Server.


  1. MySQL SQRT() Functie – Retourneer de vierkantswortel van een getal in MySQL

  2. Voorbeeld van SQL Server invoegen

  3. Hoe AppArmor te configureren voor MySQL-gebaseerde systemen (MySQL/MariaDB Replication + Galera)

  4. 6 manieren om te controleren of een tabel bestaat in SQL Server (T-SQL-voorbeelden)