Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So deaktivieren Sie alle CHECK- und Fremdschlüsseleinschränkungen für eine Tabelle in SQL Server (T-SQL-Beispiele)

Sie können den folgenden Code verwenden, um alle CHECK zu deaktivieren und Fremdschlüsseleinschränkungen für eine bestimmte Tabelle in SQL Server.

Ersetzen Sie einfach TableName mit dem Namen der entsprechenden Tabelle.

ALTER TABLE TableName NOCHECK CONSTRAINT ALL

Unten ist ein Beispiel, wo ich das mache und dann das Ergebnis überprüfe.

Beispiel 1 – Überprüfen Sie die Einschränkungen

Zuerst werfe ich einen kurzen Blick auf den aktuellen CHECK und Fremdschlüsseleinschränkungen in der Datenbank, um zu sehen, ob sie aktiviert oder deaktiviert sind.

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;

Ergebnis:

+----------------+-----------------+---------------+------------------+
| Table          | Constraint      | is_disabled   | is_not_trusted   |
|----------------+-----------------+---------------+------------------|
| ConstraintTest | chkPrice        | 0             | 0                |
| ConstraintTest | chkValidEndDate | 0             | 0                |
| ConstraintTest | chkTeamSize     | 0             | 0                |
| Occupation     | chkJobTitle     | 0             | 0                |
+----------------+-----------------+---------------+------------------+

Es gibt also derzeit vier CHECK Constraints in der Datenbank, von denen drei für den ConstraintTest sind Tabelle.

Wir können sehen, dass alle Einschränkungen aktiviert sind, weil is_disabled auf 0 gesetzt ist .

Beispiel 2 – Deaktivieren Sie die Beschränkungen

Jetzt deaktiviere ich alle Einschränkungen für den ConstraintTest Tabelle:

ALTER TABLE ConstraintTest 
NOCHECK CONSTRAINT ALL;

Beispiel 3 – Überprüfen Sie das Ergebnis

Jetzt führe ich dieselbe Abfrage aus dem ersten Beispiel aus, um das Ergebnis anzuzeigen.

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;

Ergebnis:

+----------------+-----------------+---------------+------------------+
| Table          | Constraint      | is_disabled   | is_not_trusted   |
|----------------+-----------------+---------------+------------------|
| ConstraintTest | chkPrice        | 1             | 1                |
| ConstraintTest | chkValidEndDate | 1             | 1                |
| ConstraintTest | chkTeamSize     | 1             | 1                |
| Occupation     | chkJobTitle     | 0             | 0                |
+----------------+-----------------+---------------+------------------+

Wie erwartet, alle drei Constraints für den ConstraintTest Tabelle wurden deaktiviert (weil die is_disabled Spalte ist auf 1 gesetzt für diese Einschränkungen).

Beachten Sie, dass is_not_trusted ist Spalte wird ebenfalls auf 1 gesetzt . Dies ist eine wichtige Überlegung, insbesondere wenn Sie beabsichtigen, eine Ihrer deaktivierten Einschränkungen wieder zu aktivieren.

Informationen zum Wiederherstellen des Vertrauens beim erneuten Aktivieren Ihrer Einschränkungen finden Sie unter Was Sie über WITH NOCHECK wissen sollten, wenn Sie eine CHECK-Einschränkung in SQL Server aktivieren. Die Informationen in diesem Artikel gelten auch für Fremdschlüssel.

Deaktivieren Sie die Beschränkungen einzeln

Wenn Sie nicht alle Einschränkungen in der Tabelle deaktivieren möchten, können Sie sie einzeln deaktivieren. Siehe So deaktivieren Sie eine CHECK-Einschränkung in SQL Server und So deaktivieren Sie einen Fremdschlüssel in SQL Server.

Aktivieren Sie die Einschränkungen erneut

Wenn Sie alle Beschränkungen für eine Tabelle erneut aktivieren müssen, finden Sie weitere Informationen unter So aktivieren Sie ALLE CHECK- und Fremdschlüsselbeschränkungen für eine Tabelle.

Wenn Sie sie einzeln erneut aktivieren müssen, finden Sie weitere Informationen unter So aktivieren Sie eine CHECK-Einschränkung in SQL Server und So aktivieren Sie einen Fremdschlüssel in SQL Server.