Erstellen und Ändern von CHECK-Einschränkungen
Aktualisiert: 17. Juli 2006
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.
Hinweis: |
---|
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
- ALTER TABLE (Transact-SQL)
- Vorgehensweise: Anfügen einer Check-Einschränkung an eine Tabelle oder Spalte (Visual Database Tools)
So löschen Sie eine CHECK-Einschränkung
- ALTER TABLE (Transact-SQL)
- Vorgehensweise: Löschen von CHECK-Einschränkungen (Visual Database Tools)
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 SQL Server 2005-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
- ALTER TABLE (Transact-SQL)
- Vorgehensweise: Überprüfen vorhandener Daten beim Erstellen einer Check-Einschränkung (Visual Database Tools)
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
- ALTER TABLE (Transact-SQL)
- Vorgehensweise: Deaktivieren von Check-Einschränkungen mit den Anweisungen INSERT und UPDATE (Visual Database Tools)
So deaktivieren Sie eine CHECK-Einschränkung für die Replikation
- ALTER TABLE (Transact-SQL)
- Vorgehensweise: Deaktivieren von CHECK-Einschränkungen für die Replikation (Visual Database Tools)
So finden Sie Informationen zu CHECK-Einschränkungen
Siehe auch
Konzepte
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
17. Juli 2006 |
|