Incrémentation automatique par groupe dans MySQL
MySQL fournit un moyen pratique d'incrémenter automatiquement une valeur de champ en fonction d'une colonne de regroupement. Ceci est particulièrement utile dans les scénarios où les enregistrements doivent être regroupés et numérotés au sein de chaque groupe.
Pour les tables MyISAM et BDB
Pour les tables MyISAM et BDB, incrémentation automatique peut être défini comme un élément clé secondaire. Par exemple, considérons la structure de table suivante :
CREATE TABLE foo ( id INT AUTO_INCREMENT NOT NULL, group_field INT NOT NULL, name VARCHAR(128), PRIMARY KEY(group_field, id) );
Dans cette structure, le champ id est défini comme auto-incrémenté, mais il fait également partie de la clé primaire avec le group_field. D'après la documentation MySQL :
In this case, the generated value for the AUTO_INCREMENT column is calculated as MAX(auto_increment_column) + 1 WHERE prefix=given-prefix. This is useful when you want to put data into ordered groups.
Exemple
À l'aide de la table foo créée ci-dessus, insérons quelques exemples de données :
INSERT INTO foo (group_field, name) VALUES (1, 'test'), (1, 'test2'), (2, 'test3'), (2, 'test4'), (3, 'test5'), (3, 'test6');
Après avoir inséré les données, le contenu de la table foo ressemblera à :
+----+-----------+------+ | id | group_field | name | +----+-----------+------+ | 1 | 1 | test | | 2 | 1 | test2 | | 3 | 2 | test3 | | 4 | 2 | test4 | | 5 | 3 | test5 | | 6 | 3 | test6 | +----+-----------+------+
Comme vous pouvez le voir, la colonne id a été automatiquement incrémentée au sein de chaque groupe, en fonction de la valeur group_field.
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!