Implémentation d'une clé primaire composite avec incrémentation automatique dans MySQL
Les tables MySQL InnoDB prennent en charge les clés primaires composites, permettant l'identification de lignes uniques à l'aide de plusieurs colonnes . Cependant, il est important de noter qu'une seule colonne peut être auto-incrémentée et qu'elle doit être spécifiée dans le cadre de la définition de la clé primaire.
Lorsque vous essayez de créer une clé primaire composite avec une colonne d'auto-incrémentation et deux clés étrangères, les utilisateurs peuvent rencontrer une erreur indiquant « ERREUR 1075 : définition de table incorrecte ; il ne peut y avoir qu'une seule colonne automatique et elle doit être définie comme une clé ».
Pour surmonter ce problème et implémenter le composite souhaité une clé primaire, des déclencheurs ou des procédures sont généralement recommandés. Cependant, pour plus de simplicité, une approche alternative consiste à utiliser le déclencheur MySQL suivant :
<code class="sql">DELIMITER $$ CREATE TRIGGER xxx BEFORE INSERT ON issue_log FOR EACH ROW BEGIN SET NEW.sr_no = ( SELECT IFNULL(MAX(sr_no), 0) + 1 FROM issue_log WHERE app_id = NEW.app_id AND test_id = NEW.test_id ); END $$ DELIMITER ;</code>
Ce déclencheur calcule et attribue automatiquement une valeur 'sr_no' incrémentielle pour les nouvelles lignes partageant les mêmes 'app_id' et 'test_id 'valeurs. En implémentant ce déclencheur, vous pouvez obtenir la clé primaire composite souhaitée avec une colonne à incrémentation automatique.
N'oubliez pas que les déclencheurs nécessitent une manipulation appropriée pour garantir l'intégrité des données et éviter les conditions de concurrence. Il est recommandé de tester et de maintenir minutieusement les déclencheurs pour éviter tout comportement inattendu ou tout goulot d'étranglement de performances.
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!