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

Langage SQL Discussion :

Table avec deux clés primaires SQL


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 28
    Points : 19
    Points
    19
    Par défaut Table avec deux clés primaires SQL
    Bonjour à tous,
    j'ai une petite question,
    dans une base de données SQL, est ce que je peux créer une table avec deux clé primaires??

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Non, par définition j'aurais envie de dire.
    Par contre il est possible de créer une clé primaire composée de plusieurs colonnes.
    Il est également possible de créer autant de contraintes d'unicité non nulles que souhaité.

    Comme le message n'est pas précis, il est difficile de définir laquelle des 2 solutions convient à la problématique.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 774
    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 774
    Points : 52 746
    Points
    52 746
    Billets dans le blog
    5
    Par défaut
    Non, une table ne peut avoir qu'une et une seule clef primaire.

    Cependant vous pouvez avoir des clefs primaires composées de plusieurs colonnes.
    En sus vous pouvez ajouter autant de clef alternative (ou subrogées) que vous souhaitez via les contraintes d'unicité.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    -- soit la table : 
    CREATE TABLE T_EMPLOYE_EMP
    (EMP_NUMSECU_SEXE          CHAR(1) NOT NULL CHECK (EMP_NUMSECU_SEXE IN ('1', '2'),
     EMP_NUMSECU_AN            CHAR(2) NOT NULL CHECK (CAST(EMP_NUMSECU_AN AS SMALLINT) BETWEEN 0 AND 99),              
     EMP_NUMSECU_MOIS          CHAR(2) NOT NULL CHECK (CAST(EMP_NUMSECU_AN AS SMALLINT) BETWEEN 1 AND 12),              
     EMP_NUMSECU_COMMUNE_INSEE CHAR(5) NOT NULL CHECK (CAST(EMP_NUMSECU_COMMUNE_INSEE AS INT) BETWEEN 1 AND 99999),
     EMP_NUMSECU_RANG          CHAR(3) NOT NULL CHECK (CAST(EMP_NUMSECU_RANG AS SMALLINT) BETWEEN 1 AND 999),
     EMP_NUMSECU_CLEF          CHAR(2) CHECK (CAST(EMP_NUMSECU_RANG AS SMALLINT) BETWEEN 1 AND 97),
     EMP_NOM                   VARCHAR(32) NOT NULL,
     EMP_PRENOM                VARCHAR(25) NULL, 
     EMP_MATRICULE             INT NOT NULL);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    -- création d'une clef primaire sur l'ensemble des informations du n° de sécurité sociale :
    ALTER TABLE T_EMPLOYE_EMP
       ADD CONSTRAINT PK_EMP 
          PRIMARY KEY (EMP_NUMSECU_SEXE, EMP_NUMSECU_AN, EMP_NUMSECU_MOIS, EMP_NUMSECU_COMMUNE_INSEE, EMP_NUMSECU_RANG);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    -- création d'une clef alternative sur le matricule:
    ALTER TABLE T_EMPLOYE_EMP
       ADD CONSTRAINT UK_EMP_MATRICULE 
          UNIQUE (EMP_MATRICULE);
    Bref, apprenez le langage SQL. Mon site comme mon bouquin peuvent vous y aider !

    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/ * * * * *

Discussions similaires

  1. Création de table avec plusieurs clés primaires
    Par jeanjean0403 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 31/12/2007, 15h10
  2. Create Table avec deux clés primaires
    Par ulysse031 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 03/05/2007, 14h51
  3. Réponses: 5
    Dernier message: 12/03/2007, 10h21
  4. [C#] Supprimer des colonnes (Table avec 2 clés primaire)
    Par sara21 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/11/2006, 21h42
  5. [postgresql]creer une table avec plusieurs clés primaire??
    Par perlgirl dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2004, 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