IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

création de tables + contraintes


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Points : 5
    Points
    5
    Par défaut création de tables + contraintes
    Bonjour à tous,

    Voilà, je débute en SQL et il m'est demandé de créer une base sous SQL server.

    Je voudrais faire la chose suivante:

    Créer une table avec un champ 'nom' pour lequel je n'autorise que certains caractères, à savoir:
    les lettres minuscules et majuscules
    le caractère espace
    le caractere '

    J'interdirais donc tout le reste.

    Est-ce que je peux réaliser tout ça dans mon "CREATE TABLE" simplement ?
    Ou bien ne suis-je pas sur la bonne piste ?

    Comment faire le plus simplement possible svp ?

    Merci par avance.

    Marco.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous pouvez pour cela créer une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    CREATE FUNCTION uFn_VerifieNom
    	(@chaineAVerifier VARCHAR(20))
    RETURNS BIT
    AS
    BEGIN
    	DECLARE @listeCarateresAutorises VARCHAR(128)
    	SET @listeCarateresAutorises = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'''
     
    	DECLARE @indice TINYINT,
    			@ok BIT
     
    	SELECT @indice = 1, @ok = 1
     
    	WHILE @indice < LEN(@chaineAVerifier) + 1
    	BEGIN
    		IF PATINDEX('%' + SUBSTRING(@chaineAVerifier, @indice, 1) + '%', @listeCarateresAutorises) = 0
    		BEGIN
    			SET @ok = 0
    		END
    		SET @indice = @indice + 1
    	END
     
    	RETURN @ok
    END
    et la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE maTable
    (
    	nom VARCHAR(20) NOT NULL CONSTRAINT CHK_maTable_nom CHECK(dbo.uFn_VerifieNom(nom) = 1)
    )
    Test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO dbo.maTable VALUES ('toto')
    INSERT INTO dbo.maTable VALUES ('toéto')
    (1*ligne(s) affectée(s))
    Msg*547, Niveau*16, État*0, Ligne*2
    L'instruction INSERT est en conflit avec la contrainte CHECK 'CHK_maTable_nom'. Le conflit s'est produit dans la base de données 'ELSUKET', table 'dbo.maTable', column 'nom'.
    L'instruction a été arrêtée.
    @++

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Ok merci elsuket,

    Si je comprend bien, je ne peux pas faire ça simplement ?!

    Bon et bien je vais essayer ça dès demain..

    Merci encore.


    Marco.

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Si je comprend bien, je ne peux pas faire ça simplement ?!
    Je n'ai pas trouvé de meilleure solution (plus simple / plus performante / plus facile à maintenir) à vous proposer, ce que vous demandez est tout de même un peu complexe à réaliser

    @++

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    C'est bon j'ai testé la fonction... ça marche

    Rien à dire, merci elsuket.


    Marco.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création de table et contraintes
    Par boboss123 dans le forum Langage SQL
    Réponses: 14
    Dernier message: 15/11/2010, 14h16
  2. Création de table et contraintes : is null ou is not null ?
    Par GDMINFO dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/05/2007, 08h09
  3. Syntaxe création de table et contraintes
    Par Ralfman68 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 12/02/2007, 22h18
  4. Création de table avec index
    Par Seb7 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/04/2003, 16h11
  5. Création multiple table paradox dans le code
    Par scarabee dans le forum C++Builder
    Réponses: 8
    Dernier message: 30/10/2002, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo