Wenn Sie versuchen, Daten in eine Tabelle einzugeben, die über ein vollständig aktiviertes CHECK
verfügt Einschränkung, Sie werden nur erfolgreich sein, wenn die Daten diese Einschränkung nicht verletzen. Wenn Sie versuchen, ungültige Daten einzugeben, schlägt der Vorgang mit einem Fehler fehl.
Aber was ist, wenn Sie sich in der Situation befinden, in der Sie wirklich müssen? Daten einfügen, die gegen den CHECK
verstoßen Zwang? Möglicherweise gilt die Einschränkung nicht mehr, oder Sie haben eine Ausnahme, bei der eine Zeile die Einschränkung umgehen darf. In jedem Fall können Sie nichts außerhalb der Beschränkungsregeln eingeben.
Wenn Sie sich in dieser Situation befinden, können Sie die Einschränkung jederzeit deaktivieren. So machen Sie das mit Transact-SQL.
Beispiel 1 – Deaktivieren Sie die CHECK-Einschränkung
Zum Deaktivieren eines CHECK
verwenden Sie NOCHECK
Argument innerhalb einer ALTER TABLE
Aussage.
So:
ALTER TABLE Beruf NOCHECK CONSTRAINT chkJobTitle;
Dieser Code deaktiviert eine Beschränkung namens chkJobTitle .
Beispiel 2 – Überprüfung der CHECK-Einschränkung
Wir können die sys.check_constraints
abfragen Systemansicht, um zu überprüfen, ob unsere Einschränkung deaktiviert wurde:
SELECT name, is_disabled, is_not_trusted, definitionFROM sys.check_constraints;
Ergebnis:
In diesem Fall habe ich alle CHECK
ausgewählt Beschränkungen aus der aktuellen Datenbank.
Wir können sehen, dass dies die einzige ist, die deaktiviert ist (weil ihre is_disabled Spalte ist auf 1 gesetzt ).
Möglicherweise stellen Sie fest, dass
is_not_trusted
ist Spalte wird ebenfalls auf
1
gesetzt . Dies zeigt an, dass der CHECK
Einschränkung wurde vom System nicht für alle Zeilen verifiziert.
Mit anderen Worten, wir können nicht mehr davon ausgehen, dass die Einschränkung alle Daten überprüft hat. Die Tatsache, dass die Einschränkung deaktiviert ist, bedeutet, dass Daten jetzt in die Datenbank gelangen können, ohne von der Einschränkung geprüft zu werden. Daher besteht die Möglichkeit, dass ungültige Daten in der Datenbank vorhanden sind.
Falls Sie CHECK
jemals wieder aktivieren müssen Einschränkung haben Sie die Möglichkeit, das Vertrauen der Einschränkung wiederherzustellen (indem Sie die WITH CHECK
Möglichkeit). Dadurch werden alle vorhandenen Zeilen überprüft, bevor die Einschränkung aktiviert wird.
Sie haben auch die Option nicht Überprüfung der vorhandenen Daten, dies sollte aber nur in seltenen Fällen erfolgen.
Unter Was Sie über WITH NOCHECK beim Aktivieren einer CHECK-Einschränkung in SQL Server wissen sollten, erfahren Sie, wie sich das Vertrauen auswirkt, je nachdem, wie Sie die Einschränkung erneut aktivieren.