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

MS SQL Server Discussion :

select des valeurs d'une contraintes check


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Par défaut select des valeurs d'une contraintes check
    Bonjour,
    je fais appel à vous car je développe une base de données sous sql server 2008 et je ne trouve pas la réponse à une question peut être très simple.
    Voila je souhaite faire une contrainte check sur une colonne pour n'autoriser que certaines valeurs (ENUM dans mysql) :
    CREATE TABLE COMPOSANT
    (
    ...
    COMP_LIB VARCHAR(20) NOT NULL,
    ...
    CONSTRAINT CK_LIBELLE_COMPOSANT CHECK (COMP_LIB IN('electronique', 'mecanique', 'finition'))
    )

    comment puis je selectionner les valeurs de cette contrainte check pour les mettre ensuite dans une liste déroulante par exemple ?
    Merci d'avance

  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 : 43
    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
    Par défaut
    Bonjour,

    Stockez ces différentes valeurs dans une table, puis recréez la contrainte en utilisant 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    CREATE TABLE COMPOSANT_LIBELLE
    (
    	IDComposant_Libelle TINYINT NOT NULL CONSTRAINT PK_TbComposant_Libelle PRIMARY KEY,
    	nomComposant_Libelle VARCHAR(20) NOT NULL CONSTRAINT UQ_TbComposant_Libelle_nomComposant_Libelle UNIQUE
    )
    GO
     
    INSERT INTO dbo.COMPOSANT_LIBELLE (nomComposant_Libelle)
    VALUES ('electronique'), ('mecanique'), ('finition')
    GO
     
    CREATE FUNCTION FnCheck_COMPOSANT_LIBELLE
    	(
    		@COMP_LIB VARCHAR(20)
    	)
    	RETURNS BIT
    	WITH SCHEMABINDING
    AS
    BEGIN
    	RETURN
    	(
    		CASE WHEN EXISTS
    				(
    					SELECT 1
    					FROM dbo.COMPOSANT_LIBELLE
    					WHERE nomComposant_Libelle = @COMP_LIB
    				) THEN CAST(1 AS BIT)
    			ELSE CAST(0 AS BIT)	
    		END
    	)
    END
    GO
     
    ALTER TABLE dbo.COMPOSANT
    DROP CONSTRAINT CK_LIBELLE_COMPOSANT
    GO
     
    ALTER TABLE dbo.COMPOSANT
    ADD CONSTRAINT CK_COMPOSANT_COMP_LIB
    	CHECK (dbo.FnCheck_COMPOSANT_LIBELLE(COMP_LIB) = 1)
    GO
    Vous pourrez ainsi utiliser un autre procédure stockée qui vous retournera les valeurs contenues dans la table COMPOSANT_LIBELLE et les afficher dans votre combo

    Si de plus un jour vous avez un nouveau libellé, il vous suffira de l'ajouter dans la table : pas de modification de contrainte, pas de modification du code de votre application, donc pas de recompilation ...

    @++

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Par défaut merci !
    rapidité efficacité...
    merci pour tout

    ... et longue vie à developpez.com

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

Discussions similaires

  1. Enregistrements des valeurs d'une liste à selection multiple
    Par Séphirée dans le forum VBA Access
    Réponses: 23
    Dernier message: 03/05/2013, 17h39
  2. Réponses: 5
    Dernier message: 10/12/2007, 15h24
  3. Modification d'une contrainte Check
    Par linou dans le forum Oracle
    Réponses: 7
    Dernier message: 03/10/2005, 11h25
  4. [VB.NET]Récuperer des valeurs d'une autre page
    Par Dnx dans le forum ASP.NET
    Réponses: 8
    Dernier message: 12/05/2005, 16h19
  5. fonction récupérant des valeurs dans une fonction popup...
    Par petitsims dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2005, 14h51

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