Maison > base de données > tutoriel mysql > Comment incrémenter automatiquement une colonne autre que la première dans une clé primaire commune MySQL ?

Comment incrémenter automatiquement une colonne autre que la première dans une clé primaire commune MySQL ?

DDD
Libérer: 2024-12-15 02:35:08
original
447 Les gens l'ont consulté

How to Auto-Increment a Non-First Column in a MySQL Joint Primary Key?

Incrémentation automatique à l'aide d'une clé primaire commune dans MySQL

MySQL permet la création de tables avec plusieurs clés primaires, mais ce n'est pas le cas prend en charge nativement l'auto-incrémentation sur les colonnes principales autres que les premières. Pour résoudre ce problème, envisagez l'approche suivante pour créer une clé primaire commune avec incrémentation automatique basée sur une colonne spécifique :

MyISAM Engine

Pour les tables MyISAM, vous pouvez spécifiez AUTO_INCREMENT sur une colonne secondaire dans un index à plusieurs colonnes. Cela signifie qu'il est possible d'incrémenter automatiquement la colonne table_id en fonction de la valeur database_id.

CREATE TABLE mytable (
    table_id MEDIUMINT NOT NULL AUTO_INCREMENT,
    database_id MEDIUMINT NOT NULL,
    other_column CHAR(30) NOT NULL,
    PRIMARY KEY (database_id, table_id)
) ENGINE=MyISAM;
Copier après la connexion

Exemple

En utilisant vos exemples de données, vous pouvez obtenir l'objectif souhaité. comportement comme suit :

INSERT INTO mytable (database_id, other_column) VALUES
    (1,'Foo'),(1,'Bar'),(2,'Baz'),(1,'Bam'),(2,'Zam'),(3,'Zoo');

SELECT * FROM mytable ORDER BY database_id, table_id;
Copier après la connexion

Cela générera des ID de table basés sur la base de données correspondante Identifiants :

+----------+-------------+--------------+
| table_id | database_id | other_column |
+----------+-------------+--------------+
|        1 |           1 | Foo          |
|        2 |           1 | Bar          |
|        3 |           1 | Bam          |
|        1 |           2 | Baz          |
|        2 |           2 | Zam          |
|        1 |           3 | Zoo          |
+----------+-------------+--------------+
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal