Contraintes check +SQLServer

[Fermé]
Signaler
Messages postés
12
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
30 mai 2005
-
 yazane -
bonjour
je voudrais une écrire une contrainte sur un champ de type varchar dans une BD SQLServer, le champ s'appelle nom je voudrais m'assurer qu'il ne comporte pas de chiffre(A-Z)
j'ai écrit:
alter table matable
add constrainte nom_valide
check(nom like('[A-Z][a-z]'))

mais SQLServer ne l'accepte pas, si vous pouvez m'aider
N.b : j'ai bien vérifier que les données existantes vérifient la contrainte
merci d'avance

5 réponses

Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 601
La syntaxe:

create rule [MaRule] as @value like '[A-Z][a-z]'
GO
EXEC sp_bindrule N'MaRule', N'[NomTable].[NomColonne]'
GO
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
12
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
30 mai 2005

j'ai créer la régle, mais en inserant des données ,il n'accepte que les données de 2 lettres en majiscule ou miniscule( exemple FR ou fr) mais si je lui insére un nom de plus que 2 lettres il me génére un conflit à cause de la règle.
Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 601
Créé une rule (CREATE RULE...) puis bind là à ta colonne.
(Je n'ai plus la syntaxe en tête).
Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 601
ah oui pardon.
Effectivement cette expression ne match pas plusieurs caractères.
Messages postés
12
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
30 mai 2005

et vous ne savez pas comment on fait pour tout l'alphabet
Messages postés
32844
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 601
La syntaxe d'expression régulières de SQL Server est très limitée.
Je doute que tu arrive à ajouter une telle contrainte.

Il faudra implémenter cette contrainte au niveau de ton code, je le crains.
Messages postés
12
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
30 mai 2005

merci en tout cas
essaye avec ca :
alter table nom_de_table
add constrainte ck_1
check(nom not like '[0-9]')