Erstellen und Ändern von CHECK-Einschränkungen

Sie können eine CHECK-Einschränkung als Bestandteil der Tabellendefinition erstellen, während eine Tabelle erstellt wird. Wenn bereits eine Tabelle vorhanden ist, können Sie eine CHECK-Einschränkung hinzufügen. Tabellen und Spalten können mehrere CHECK-Einschränkungen enthalten.

Wenn bereits eine CHECK-Einschränkung vorhanden ist, können Sie sie ändern oder löschen. So können Sie z. B. den Ausdruck ändern, der von der CHECK-Einschränkung für eine Spalte in der Tabelle verwendet wird.

HinweisHinweis

Um eine CHECK-Einschränkung zu ändern, müssen Sie zuerst die vorhandene CHECK-Einschränkung löschen und sie dann mit der neuen Definition neu erstellen.

Im folgenden Transact-SQL-Beispiel wird eine neue Tabelle erstellt. Anschließend wird die Tabelle geändert, indem der CreditRating-Spalte eine CHECK-Einschränkung hinzugefügt wird.

IF OBJECT_ID ('dbo.Vendors', 'U') IS NOT NULL
DROP TABLE dbo.Vendors;
GO
CREATE TABLE dbo.Vendors 
    (VendorID int PRIMARY KEY, VendorName nvarchar (50), 
    CreditRating tinyint)
GO
ALTER TABLE dbo.Vendors ADD CONSTRAINT CK_Vendor_CreditRating
    CHECK (CreditRating >= 1 AND CreditRating <= 5)

Löschen Sie eine CHECK-Einschränkung, um die Beschränkungen für zulässige Datenwerte in der Spalte oder den Spalten zu entfernen, die im Einschränkungsausdruck enthalten sind.

So erstellen Sie eine CHECK-Einschränkung bei der Erstellung einer Tabelle

So erstellen Sie eine CHECK-Einschränkung für eine vorhandene Tabelle

So löschen Sie eine CHECK-Einschränkung

Erzwingen einer CHECK-Einschränkung mithilfe von WITH NOCHECK

Wenn eine CHECK-Einschränkung einer vorhandenen Tabelle hinzugefügt wird, kann die CHECK-Einschränkung auf neue Daten oder auf vorhandene Daten angewendet werden. Standardmäßig wird die CHECK-Einschränkung sowohl auf vorhandene als auch auf neue Daten angewendet. Verwenden Sie die Option WITH NOCHECK der ALTER TABLE-Anweisung, um die neue Einschränkung nur auf neu hinzugefügte Daten anzuwenden. Die Option ist dann sinnvoll, wenn die vorhandenen Daten bereits der neuen CHECK-Einschränkung entsprechen oder wenn es aufgrund einer Geschäftsregel erforderlich ist, dass die Einschränkung erst ab dem aktuellen Zeitpunkt erzwungen wird.

Beispielsweise könnte eine alte Einschränkung erfordern, dass Postleitzahlen auf vier Ziffern beschränkt sind, aber eine neue Einschränkung erfordert eine aus fünf Ziffern bestehende Postleitzahl. Alte Daten mit vierstelliger Postleitzahl sind weiterhin gültig und werden mit neuen Daten zusammen gespeichert, die fünfstellige Postleitzahlen enthalten. In diesem Fall sollten nur neue Daten anhand der neuen Einschränkung überprüft werden.

Sie sollten jedoch sehr sorgfältig vorgehen, wenn Sie eine Einschränkung ohne Überprüfung der vorhandenen Daten hinzufügen, da auf diese Weise die Kontrollmechanismen in Database Engine (Datenbankmodul) umgangen werden, die die Integriätsregeln für die Tabelle erzwingen.

So verhindern Sie die Überprüfung vorhandener Daten, wenn Sie eine CHECK-Einschränkung erstellen

Deaktivieren von CHECK-Einschränkungen

Sie können vorhandene CHECK-Einschränkungen für bestimmte Vorgänge deaktivieren, beispielsweise INSERT-Vorgänge, UPDATE-Vorgänge sowie die Replikationsverarbeitung.

  • INSERT- und UPDATE-Anweisungen

    Durch das Deaktivieren einer CHECK-Einschränkung wird das Ändern von Daten in der Tabelle ohne Überprüfung durch die Einschränkungen aktiviert. Deaktivieren Sie eine CHECK-Einschränkung während der Ausführung der Anweisungen INSERT und UPDATE, wenn neue Daten die Einschränkung verletzen würden oder wenn die Einschränkung nur für die Daten gelten soll, die sich bereits in der Datenbank befinden.

  • Replikationsverarbeitung

    Deaktivieren Sie eine CHECK-Einschränkung während der Replikation, wenn die Einschränkung nur für die Quelldatenbank gilt. Wenn eine Tabelle repliziert wird, werden die Tabellendefinition und die Daten von der Quelldatenbank in eine Zieldatenbank kopiert. Diese beiden Datenbanken befinden sich normalerweise, aber nicht notwendigerweise, auf getrennten Servern. Wenn die CHECK-Einschränkungen, die nur für die Quelldatenbank gelten, nicht deaktiviert werden, kann dies dazu führen, dass das Eingeben neuer Daten in die Zieldatenbank unnötigerweise verhindert wird. Weitere Informationen finden Sie unter Steuern von Einschränkungen, Identitäten und Triggern mithilfe von NOT FOR REPLICATION.

So deaktivieren Sie eine CHECK-Einschränkung für INSERT- und UPDATE-Anweisungen

So deaktivieren Sie eine CHECK-Einschränkung für die Replikation

So finden Sie Informationen zu CHECK-Einschränkungen

Siehe auch

Konzepte