Utilisation d'une clé primaire à incrémentation automatique sur plusieurs colonnes avec incrémentation automatique sur la colonne secondaire
Le maintien de l'intégrité des données dans les bases de données avec des structures partagées peut être crucial. Dans le cadre de votre stratégie, vous envisagez d'utiliser deux colonnes comme clé primaire commune, l'une étant un identifiant de base de données et l'autre une clé de table. Cependant, vous souhaitez définir la clé de table pour qu'elle s'incrémente automatiquement en fonction de l'identifiant de la base de données.
Pour MySQL, vous disposez d'options en fonction du moteur de stockage que vous utilisez. Si vous utilisez MyISAM, vous pouvez tirer parti de sa capacité à spécifier AUTO_INCREMENT sur une colonne secondaire dans un index à plusieurs colonnes.
Pour comprendre comment cela fonctionne, considérons l'exemple suivant :
CREATE TABLE animals ( grp ENUM('fish','mammal','bird') NOT NULL, id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (grp,id) ) ENGINE=MyISAM;
Dans ce tableau, les colonnes grp et id forment la clé primaire composite. La colonne id s'incrémente automatiquement, mais son calcul de valeur prend en compte le préfixe (dans ce cas, la valeur grp).
Application de ce concept à votre scénario :
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;
Insérer des exemples de données :
INSERT INTO mytable (database_id, other_column) VALUES (1,'Foo'),(1,'Bar'),(2,'Baz'),(1,'Bam'),(2,'Zam'),(3,'Zoo');
Interrogation de la table :
SELECT * FROM mytable ORDER BY database_id,table_id;
Cela renverra des résultats regroupés par database_id avec des valeurs table_id auto-incrémentées pour chaque groupe.
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!