Contraintes check +SQLServer

gauchino Messages postés 12 Statut Membre -  
 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

  1. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    La syntaxe:

    create rule [MaRule] as @value like '[A-Z][a-z]'
    GO
    EXEC sp_bindrule N'MaRule', N'[NomTable].[NomColonne]'
    GO
    1
    1. gauchino Messages postés 12 Statut Membre
       
      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.
      0
  2. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Créé une rule (CREATE RULE...) puis bind là à ta colonne.
    (Je n'ai plus la syntaxe en tête).
    0
  3. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    ah oui pardon.
    Effectivement cette expression ne match pas plusieurs caractères.
    0
    1. gauchino Messages postés 12 Statut Membre
       
      et vous ne savez pas comment on fait pour tout l'alphabet
      0
  4. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    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.
    0
    1. gauchino Messages postés 12 Statut Membre
       
      merci en tout cas
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. yazane
     
    essaye avec ca :
    alter table nom_de_table
    add constrainte ck_1
    check(nom not like '[0-9]')
    0