Remplir un champ MySQL avec l'ID d'enregistrement à l'aide d'un déclencheur
Les déclencheurs MySQL fournissent un mécanisme pour exécuter automatiquement des actions spécifiques lorsque des modifications de données se produisent dans un tableau. Ce mécanisme peut être exploité pour répondre à une exigence courante : mettre à jour un champ avec la valeur de l'ID de l'enregistrement lors de l'insertion.
Considérons une table avec trois colonnes : id (clé primaire), group_id (entier) et valeur. (varchar). Lors de l'insertion d'enregistrements, l'objectif est de garantir que group_id est défini sur l'identifiant de l'enregistrement si group_id est omis ou défini sur NULL lors de l'insertion.
Bien que cette exigence puisse être satisfaite en utilisant une approche en deux étapes d'insertion d'un enregistrement suivie d'une mise à jour, une solution basée sur des déclencheurs offre une approche plus élégante et efficace. Cependant, MySQL présente un défi dans ce scénario.
Limitations des déclencheurs et solution alternative
Dans MySQL, les déclencheurs ne peuvent pas modifier les valeurs des colonnes pendant la phase BEFORE INSERT car l'auto- la valeur d'ID générée n'est pas encore disponible. De plus, les déclencheurs ne peuvent pas mettre à jour les valeurs des colonnes pendant la phase APRÈS INSERT.
Par conséquent, le comportement souhaité ne peut pas être obtenu à l'aide d'un seul déclencheur. Au lieu de cela, la solution alternative suivante est recommandée :
Cette approche garantit que le champ group_id est toujours renseigné avec la valeur correcte, qu'elle soit spécifiée ou non lors de l'insertion.
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!