1

Je veux utiliser une contrainte de vérification pour une colonne dans une table dans SQL Server 2008.Ajouter contraintes de vérification dans SQL Server: ADD CONTRAINTE vs ADD CHÈQUE

Je voudrais donner un nom qualifié pour la contrainte de vérification.

J'ai vu plusieurs versions de syntaxe sur la façon de créer:

ALTER TABLE [dbo].[Roles2016.UsersCRM] WITH CHECK 
    ADD CHECK (([Estado]=(4) OR [Estado]=(3) OR [Estado]=(2) OR [Estado]=(1))) 

ALTER TABLE [dbo].[Roles2016.UsersCRM] WITH CHECK 
    ADD CONSTRAINT [CK_UsuariosCRM_Estado] 
     CHECK (([Estado]=(4) OR [Estado]=(3) OR [Estado]=(2) OR [Estado]=(1))) 

Quelle est la différence ADD CHECK et ADD CONSTRAINT pour une contrainte de vérification?

+5

La seconde syntaxe vous permet de nommer votre contrainte. le premier ne le fait pas. C'est une bonne pratique de nommer les contraintes. –

Répondre

3

Il est possible, mais une très mauvaise habitude pour ajouter des contraintes sans nom:

CREATE TABLE tbl(SomeColumn VARCHAR(10) DEFAULT('test')) 

va créer un CONSTRAINT avec un nom aléatoire. Mieux utiliser ceci

CREATE TABLE tbl(SomeColumn VARCHAR(10) CONSTRAINT DF_YourTable_SomeColumm DEFAULT('test')) 

Cela fera la même chose, mais nommera la contrainte comme vous le voulez.

Ceci est extrêmement important si vous exécutez des scripts de mise à niveau dans des environnements déployés. Imaginez, vous voulez changer une contrainte plus tard et le nom de cette contrainte est différent sur les machines de vos clients ... C'est vraiment pénible! Donc: nommez toujours vos contraintes!