Maison > Article > base de données > Comment changer la clé primaire composite en clé primaire unique
La clé primaire dite composite signifie que la clé primaire de votre table contient plus d'un champ et n'utilise pas d'identifiant auto-incrémenté sans signification commerciale comme clé primaire.
Par exemple
create table test ( name varchar(19), id number, value varchar(10), primary key (name,id) )
La combinaison des champs name et id ci-dessus est la clé primaire composite de votre table de test. Elle apparaît car votre champ name peut avoir le même nom, vous devez donc le faire. ajoutez l'ID. Les champs peuvent garantir l'unicité de vos enregistrements. De manière générale, la longueur et le nombre de champs de la clé primaire doivent être aussi petits que possible.
Il y aura un doute ici ? La clé primaire est le seul index, alors pourquoi une table peut-elle créer plusieurs clés primaires ?
En fait, "la clé primaire est le seul index" est un peu ambigu. Par exemple, nous créons un champ ID dans la table, le développons automatiquement et le définissons comme clé primaire. Cela ne pose aucun problème car "La clé primaire est le seul index", et l'ID grandit automatiquement jusqu'à. garantir l'unicité, alors oui.
À ce stade, nous créons un autre nom de champ avec le type varchar et le définissons comme clé primaire. Vous constaterez que vous pouvez remplir la même valeur de nom dans plusieurs lignes de la table. ? Cette phrase est-elle « la clé primaire est le seul index » ?
C'est pourquoi j'ai dit que « la clé primaire est le seul index » est ambigu. Cela devrait être "Quand il n'y a qu'une seule clé primaire dans la table, c'est le seul index ; lorsqu'il y a plusieurs clés primaires dans la table, on parle de clé primaire composite, et la combinaison des clés primaires composites garantit un unique indice."
Pourquoi l'ID auto-croissant est-il une clé primaire qui peut être utilisée comme identifiant unique, alors pourquoi une clé primaire composite est-elle encore nécessaire ? Parce que toutes les tables ne doivent pas nécessairement avoir le champ ID. Par exemple, si nous construisons une table d'étudiant et qu'il n'y a pas d'ID identifiant de manière unique l'étudiant, que devons-nous faire ? Un seul champ ne peut pas être utilisé pour une identification unique. À l'heure actuelle, nous pouvons définir plusieurs champs comme clés primaires pour former une clé primaire composite. Parmi eux, il n'y a aucun problème si certaines valeurs de champ de clé primaire. sont répétés, tant qu'il n'y a pas plusieurs enregistrements. Si toutes les valeurs de clé primaire sont exactement les mêmes, elles ne sont pas considérées comme des doublons.
Comment changer la clé primaire composite en une clé primaire unique
Une table ne peut avoir qu'une seule clé primaire :
Clé primaire basée sur une colonne :
alter table test ajouter une contrainte PK_TEST primaire key(ename);
Clé primaire commune basée sur plusieurs colonnes :
alter table test add contrainte PK_TEST clé primaire(ename,anniversaire);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!