Création et modification des contraintes CHECK
Mis à jour : 17 juillet 2006
Vous pouvez créer une contrainte CHECK dans le cadre de la définition d'une table lorsque vous créez celle-ci. Si une table existe déjà, vous pouvez ajouter une contrainte CHECK. Les tables et colonnes peuvent contenir plusieurs contraintes CHECK.
Si une contrainte CHECK existe déjà, vous pouvez la modifier ou la supprimer. Par exemple, vous pouvez modifier l'expression utilisée par la contrainte CHECK sur une colonne de la table.
Remarque : |
---|
Pour modifier une contrainte CHECK, vous devez d'abord supprimer la contrainte CHECK existante, puis la recréer avec la nouvelle définition. |
L'exemple suivant Transact-SQL crée une table puis la modifie en ajoutant une contrainte CHECK
à la colonne CreditRating
.
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)
Supprimez une contrainte CHECK pour ôter les limites imposées aux valeurs de données acceptables dans la ou les colonnes incluses dans l'expression de la contrainte.
Pour créer une contrainte CHECK lors de la création d'une table
Pour créer une contrainte CHECK sur une table existante
- ALTER TABLE (Transact-SQL)
- Procédure : rattacher une nouvelle contrainte de validation à une table ou une colonne (Visual Database Tools)
Pour supprimer une contrainte CHECK
- ALTER TABLE (Transact-SQL)
- Procédure : supprimer des contraintes de validation (Visual Database Tools)
Application d'une contrainte CHECK à l'aide de WITH NOCHECK
Si vous ajoutez une contrainte CHECK à une table existante, celle-ci peut s'appliquer aux nouvelles données seulement ou aux données existantes. Par défaut, elle s'applique aux données existantes comme aux nouvelles données. Utilisez l'option WITH NOCHECK de l'instruction ALTER TABLE pour appliquer la nouvelle contrainte uniquement aux nouvelles données ajoutées. Cette option s'avère utile lorsque les données existantes satisfont déjà à la nouvelle contrainte CHECK ou si une logique d'entreprise nécessite l'application de la contrainte à partir du moment présent seulement.
Supposons, par exemple, qu'une ancienne contrainte exige que les codes postaux soient limités à cinq chiffres et qu'une nouvelle contrainte requière des codes à neuf chiffres. Les anciennes données avec des codes postaux à cinq chiffres sont toujours valides et coexisteront avec les nouvelles données qui contiennent des codes postaux à neuf chiffres. Dès lors, seules les nouvelles données doivent être vérifiées en fonction de la nouvelle contrainte.
Faites néanmoins preuve de prudence lorsque vous ajoutez une contrainte sans vérifier les données existantes car, lors d'une telle opération, les contrôles du moteur de base de données SQL Server 2005 qui appliquent les règles d'intégrité pour la table ne sont pas mis en œuvre.
Pour empêcher la vérification des données existantes lors de la création d'une contrainte CHECK
- ALTER TABLE (Transact-SQL)
- Procédure : valider des données existantes lors de la création d'une contrainte de validation (Visual Database Tools)
Désactivation des contraintes CHECK
Vous pouvez désactiver les contraintes CHECK existantes pour des opérations spécifiques, telles que les opérations INSERT, UPDATE et le traitement de la réplication.
- Instructions INSERT et UPDATE
La désactivation d'une contrainte CHECK permet de modifier les données de la table sans qu'elles soient validées par les contraintes. La désactivation d'une contrainte CHECK dans les instructions INSERT et UPDATE est conseillée si de nouvelles données vont enfreindre la contrainte ou que cette dernière ne doit s'appliquer qu'aux données figurant déjà dans la base de données. - Traitement de la réplication
Désactivez une contrainte CHECK pendant la réplication si la contrainte est spécifique à la base de données source. Lors d'une réplication de table, la définition et les données de cette table sont copiées de la base de données source vers une base de données de destination. Ces deux bases de données se trouvent généralement, mais pas nécessairement, sur des serveurs distincts. Si les contraintes CHECK spécifiques à la base de données source ne sont pas désactivées, elles risquent d'empêcher inutilement l'insertion de nouvelles données dans la base de données de destination. Pour plus d'informations, consultez Contrôle des contraintes, des identités et des déclencheurs avec l'option NOT FOR REPLICATION.
Pour désactiver une contrainte CHECK pour les instructions INSERT et UPDATE
- ALTER TABLE (Transact-SQL)
- Procédure : désactiver les contraintes de validation avec des instructions INSERT et UPDATE (Visual Database Tools)
Pour désactiver une contrainte CHECK pour la réplication
- ALTER TABLE (Transact-SQL)
- Procédure : désactiver des contraintes de validation pour la réplication (Visual Database Tools)
Pour obtenir des informations sur les contraintes CHECK
Voir aussi
Concepts
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version | Historique |
---|---|
17 juillet 2006 |
|