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??
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??
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.
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);Bref, apprenez le langage SQL. Mon site comme mon bouquin peuvent vous y aider !
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);
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/ * * * * *
Partager