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 :

[2005] mettre une contrainte unique


Sujet :

Développement SQL Server

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut [2005] mettre une contrainte unique
    Bonjour

    Je sais que cela parait tout bête, mais je patauge.
    J'ai une table à deux champs le premier est un compteur tout simple, le second est un champ Varchar(50).

    Je voudrais mettre une contraire d'unicité sur le champ Varchar(50) car les valeurs entrées ne doivent pas être dupliquée. Je suis sur SQL 2005 Express et je comprend pas le fonctionnement du formulaire de gestoin des contrainte.

    Et je ne sais pas faire cette opération en Transact SQL.

    Pouvez vous m'aider ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 847
    Points : 52 961
    Points
    52 961
    Billets dans le blog
    6
    Par défaut
    C'est du SQL de base !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE MaTable
    ADD CONSTRAINT MaContrainteUnique UNIQUE (MaColonne1, MaColonne2)
    Et plus généralement :
    http://sqlpro.developpez.com/cours/s...partie2#L7.2.2
    http://sqlpro.developpez.com/cours/s...e=partie2#L7.6


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    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,

    J'ai une table à deux champs le premier est un compteur tout simple, le second est un champ Varchar(50).

    Je voudrais mettre une contraire d'unicité sur le champ Varchar(50) car les valeurs entrées ne doivent pas être dupliquée
    Votre champs auto-incrémenté doit être la clé primaire de votre table.
    Si ce n'est pas le cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ALTER TABLE maTable
    ADD CONSTRAINT PK_maTable PRIMARY KEY (maColonne)
    Dans ce cas un index cluster est implicitement créé par SQL Server.

    Ensuite pour ajouter la contrainte d'unicité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE maTable
    ADD CONSTRAINT UQ_maTable_maColonne UNIQUE (maColonne)
    Dans ce cas un index non-cluster est créé implicitement également.
    Si le cardinal de votre table est élevé, il sera donc plus avantageux de changer le type de votre colonne VARCHAR(50) en un type caractère de longueur constante (CHAR).

    @++

  4. #4
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour votre aide.

    Je sais que c'est trés basique, mais je n'ai jamas rien compris au T-SQL pour manipuler les tables, les champs, les index et tout ça. J'avais l'habitude de le faire avec le Enterprise Manager sous 2000 et je suis encore un peu noob sur le 2005 Express

    Mon truc c'est plus l'ASP.NET, du coup, en SQL, ben je rame pas mal.

    Encore merci.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  5. #5
    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
    Vous pouvez regarder dans ma signature pour télécharger ou consulter en ligne les aides de SQL Server.
    Vous pouvez aussi regarder le site de SQLPro.

    @++

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 847
    Points : 52 961
    Points
    52 961
    Billets dans le blog
    6
    Par défaut
    Je sais que c'est trés basique, mais je n'ai jamais rien compris au T-SQL pour manipuler les tables, les champs, les index et tout ça.
    Cela n'est pas du Transact SQL, mais du SQL, que tout SGBDR manipule. Apprenez la langage SQL ! Mon site web (http://sqlpro.developpez.com/), comme mes bouquins sont là pour ça !

    a +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 50
    Points : 60
    Points
    60
    Par défaut
    @elsuket

    Vous répondez de déclarer la colonne en PK, et ensuite de rajouter une contrainte unique sur sa composante.
    N'y a t'il pas redondance, une PK n'est t'elle pas implicitement unique ?

  8. #8
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Ouais, je suis d'accord avec vous, c'est bien d'apprendre un langage et ça me ferais bien plaisir de maitriser un peu mieux le SQL.

    Mais, parce que y a toujours un mais, la vie est faite de choix de priorité.
    Mon job c'est de programmer des sites (à mon compte en plus) donc je me concetre sur l'ASP.NET, version VB. Mais en plus il faut que je soit au top sur : HTML, CSS, JavaScript, AJAX.
    En plus il faut que je cause un poil e C# car beaucoup d'exemple sont donné en C# et pas en VB.NET. Parfois il faut que je me gave du PHP, histoire de capter l'esprit de tel ou tel script (quoique, depuis que je full .NET, je fais plus).

    Ensuite, mes projets vont me destiner à faire du MMORPG, donc cela passe par renforcer mon C# et apprendre à me servir du FrameWork XNA et en plus me colter la programmation 3D, assez complexe de ce que j'en ai vu jusqu'à présent. D'autant plus que les gars du forum Gaming, ici même, sont trés trés sympa avec les noob

    Bref, j'avoue, je préfère venir ici poser une question de temps en temps car je n'ai pas le temps d'apprendre le SQL à fond. Du reste, parfois je pose la question pointue qui laisse tout le monde pantois.

    En tout cas, merci pour votre aide à tous, rien qu'en lisant le forum, j'apprends pas mal de chose. Quand j'aurais un peu de temps, je me plongerais dans les cours de SQLPRO.

    Kenavo
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  9. #9
    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
    Citation Envoyé par Judah
    Vous répondez de déclarer la colonne en PK, et ensuite de rajouter une contrainte unique sur sa composante.
    N'y a t'il pas redondance, une PK n'est t'elle pas implicitement unique ?
    Effectivement la colonne qui est utilisée comme clé primaire doit contenir des valeurs distinctes une à une.

    Cependant c'est aussi celle qui doit servir de référence de clé étrangère dans les autres tables, ce qui n'est pas le cas d'une contrainte d'unicité, qui à mon sens et comme dans le cas présent, ne doit pas être utilisée comme clé primaire.

    La clé primaire est le plus souvent une clé technique, la colonne unique est une clé naturelle.

    @++

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

Discussions similaires

  1. Mettre une contrainte comprise entre 1 et 10.
    Par zeon71 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/04/2010, 14h57
  2. Suppression d'une contrainte unique
    Par Linio dans le forum Requêtes
    Réponses: 8
    Dernier message: 29/06/2007, 16h38
  3. Ajouter une contrainte UNIQUE à une clé
    Par Linio dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/06/2007, 13h36
  4. Réponses: 13
    Dernier message: 11/01/2007, 15h39
  5. [Interbase] Mettre une contrainte sur un champ
    Par mika dans le forum InterBase
    Réponses: 2
    Dernier message: 26/01/2005, 14h04

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