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 :

Creer une constraint


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Par défaut Creer une constraint
    Bonjour,

    je viens d'apprendre sql server (2008), voici ma question:
    j'ai cree une base de donnees sql server 2008.
    c'est pour un site de reservations de place de cinema;
    il doit y avoir 3 films recommandes en page d'acceuil;
    j'ai donc rajoute une colonne dans ma database qui contient des donnees de types boolean;
    il doit y avoir que 3 films (et pas plus) dont la donnee est <true>!!
    comment creer cette contrainte qui permettrait donc de ne pas avoir plus de 3 films recommandes?????

    Merci beaucoup.

    Serait il possible d'avoir le code exact?

  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 : 44
    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,

    Je considère que votre table s'appelle mesFilms et que la colonne de type BIT s'appelle recommande.

    Si vous voulez quelque chose de facilement maintenable, il faut créer une fonction pour pouvoir ajouter une contrainte de domaine (CHECK) :

    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
    CREATE FUNCTION FnCheckNbFilmsRecommandes ()
    	RETURNS BIT
    	WITH SCHEMABINDING
    AS
    BEGIN
    	RETURN
    	(
    		SELECT CASE
    					WHEN COUNT(*) <= 3 THEN CAST(1 AS BIT)
    					ELSE CAST(0 AS BIT)
    				END
    		FROM dbo.mesFilms
    		WHERE recommande = 1
    	)			
    END
    Ainsi, si un jour vous devez afficher 5 films, il vous suffira de modifier cette fonction pour remplacer le 3 par un 5.

    Pour "attacher" la contrainte à la table, il vous suffit d'écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE dbo.mesFilms
    ADD CONSTRAINT CHK_mesFilms_filmRecommande CHECK (dbo.FnCheckNbFilmsRecommandes() = 1)
    Si ce n'est pas déjà fait, n'oubliez pas de mettre une contrainte de valeur par défaut pour la colonne recommande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE dbo.mesFilms
    ADD CONSTRAINT DF_mesFilms_recommande DEFAULT (0) FOR recommande
    La colonne recommande doit donc être valuée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE dbo.mesFilms
    ALTER COLUMN recommande BIT NOT NULL
    @++

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 9
    Par défaut
    Merci beaucoup!!
    Vous etes un genie.

  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 : 44
    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
    Un petit ?

    @++

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

Discussions similaires

  1. creer une constraint foreign key
    Par dv-2008 dans le forum Requêtes
    Réponses: 1
    Dernier message: 17/04/2009, 09h25
  2. [TP]comment creer une disquette bootable (les fichiers)
    Par ludovic5532 dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 25/10/2003, 18h46
  3. Créer une diquette de boot
    Par gwen-al dans le forum Administration système
    Réponses: 2
    Dernier message: 02/07/2003, 14h48
  4. jaimerais savoir commen creer une grille.......
    Par zephyr dans le forum Flash
    Réponses: 5
    Dernier message: 29/04/2003, 12h14
  5. [VB6]Créer une Base de données
    Par ThierryAIM dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/04/2003, 17h24

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