Du kan bruge koden nedenfor til at deaktivere alle CHECK
og fremmednøgle begrænsninger for en specifik tabel i SQL Server.
Bare udskift TableName
med navnet på den relevante tabel.
ALTER TABLE TableName NOCHECK CONSTRAINT ALL
Nedenfor er et eksempel, hvor jeg gør dette og derefter tjekker resultatet.
Eksempel 1 – Gennemgå begrænsningerne
Først vil jeg tage et hurtigt kig på den aktuelle CHECK
og fremmednøgle-begrænsninger i databasen for at se, om de er aktiveret eller deaktiveret.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys UNION SELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trusted FROM sys.check_constraints;
Resultat:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 0 | 0 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 0 | 0 | +----------------+-----------------+---------------+------------------+
Så der er i øjeblikket fire CHECK
begrænsninger i databasen, hvoraf tre er til ConstraintTest
tabel.
Vi kan se, at alle begrænsninger er aktiveret, fordi er_deaktiveret er indstillet til 0 .
Eksempel 2 – Deaktiver begrænsningerne
Nu vil jeg deaktivere alle begrænsninger for ConstraintTest
tabel:
ALTER TABLE ConstraintTest NOCHECK CONSTRAINT ALL;
Eksempel 3 – Tjek resultatet
Nu kører jeg den samme forespørgsel fra det første eksempel for at se resultatet.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys UNION SELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trusted FROM sys.check_constraints;
Resultat:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 1 | 1 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 1 | 1 | | Occupation | chkJobTitle | 0 | 0 | +----------------+-----------------+---------------+------------------+
Som forventet, alle tre begrænsninger for ConstraintTest tabellen er blevet deaktiveret (fordi er_deaktiveret kolonne er indstillet til 1 for disse begrænsninger).
Bemærk, at is_not_trusted kolonne er også indstillet til 1 . Dette er en vigtig overvejelse, især hvis du har til hensigt at genaktivere nogen af dine deaktiverede begrænsninger.
Se Hvad du bør vide om MED NOCHECK, når du aktiverer en CHECK-begrænsning i SQL Server for at få oplysninger om, hvordan du genopretter tillid, når du genaktiverer dine begrænsninger. Oplysningerne i den artikel gælder også for fremmednøgler.
Deaktiver begrænsningerne individuelt
Hvis du ikke vil deaktivere alle begrænsninger i tabellen, kan du deaktivere dem individuelt. Se, hvordan du deaktiverer en CHECK-begrænsning i SQL Server, og hvordan du deaktiverer en fremmednøgle i SQL Server.
Genaktiver begrænsningerne
Hvis du har brug for at genaktivere alle begrænsninger for en tabel, se Sådan aktiverer du ALLE KONTROL og begrænsninger for fremmednøgle for en tabel.
Hvis du har brug for at genaktivere dem individuelt, se Sådan aktiverer du en CHECK-begrænsning i SQL Server og og Sådan aktiverer du en fremmednøgle i SQL Server.