Maison >base de données >tutoriel mysql >Comment implémenter une clé primaire à deux colonnes avec incrémentation automatique dans MySQL ?
Dans un scénario où plusieurs bases de données possèdent des structures similaires et les données doivent être conservées entre eux, la protection de l’intégrité des données est cruciale. L'utilisation d'une clé primaire à deux colonnes s'avère bénéfique à cet égard. Une colonne, représentant un ID de base de données, établit une connexion à une table contenant des informations spécifiques à la base de données. Une autre colonne, la clé de table, possède l'attribut de non-unicité mais facilite la distinction des lignes grâce à la colonne ID de la base de données.
Le but est de joindre les deux colonnes en tant que clé primaire tout en automatisant simultanément les incréments de clé de table. en fonction de la colonne ID de la base de données.
Pour MySql, une solution existe pour résoudre ce problème exigence :
1. Utilisation du moteur de stockage MyISAM :
MySql permet de spécifier AUTO_INCREMENT sur les colonnes secondaires dans les index à plusieurs colonnes, sous le moteur de stockage MyISAM. Cette caractéristique permet de générer automatiquement des valeurs pour la colonne AUTO_INCREMENT en utilisant la formule : MAX(auto_increment_column) 1 WHERE prefix=given-prefix.
2. Exemple de mise en œuvre :
Pour illustrer, considérons le schéma suivant :
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;
3. Résultat :
L'insertion de données dans cette table, avec des exemples d'ID de base de données et d'autres données, démontre le comportement d'incrémentation automatique :
INSERT INTO mytable (database_id, other_column) VALUES (1,'Foo'),(1,'Bar'),(2,'Baz'),(1,'Bam'),(2,'Zam'),(3,'Zoo');
La récupération des données révèle l'incrémentation automatique de la clé de la table basé sur l'ID de la base de données :
SELECT * FROM mytable ORDER BY database_id,table_id; +----------+-------------+--------------+ | table_id | database_id | other_column | +----------+-------------+--------------+ | 1 | 1 | Foo | | 2 | 1 | Bar | | 3 | 1 | Bam | | 1 | 2 | Baz | | 2 | 2 | Zam | | 1 | 3 | Zoo | +----------+-------------+--------------+
En utilisant le moteur de stockage MyISAM et en comprenant les mécanismes d'auto-incrémentation sous clés primaires à plusieurs colonnes, cette approche garantit à la fois l'intégrité des données et une gestion simplifiée des données.
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!