Insertion de données avec une chaîne concaténée et une clé primaire
Les insertions dans une table MySQL impliquent l'attribution de valeurs à des colonnes, incluant souvent une valeur primaire auto-incrémentée clé. Cependant, on peut parfois souhaiter concaténer une chaîne avec la clé primaire lors de l'insertion, comme dans le cas de l'attribution de noms d'utilisateur en tant que "utilisateur" suivi de la valeur de la clé primaire.
Défi :
La table user contient plusieurs colonnes, dont une clé primaire "id" auto-incrémentée et une colonne "nom d'utilisateur". L'intention est d'attribuer automatiquement des noms d'utilisateur en tant qu'« utilisateur » suivis des valeurs de clé primaire respectives.
Approche :
- L'utilisation d'une seule instruction SQL est impossible car la valeur de la clé primaire n'est générée qu'après l'exécution du déclencheur "BEFORE INSERT", et la modification ultérieure du "username" est interdite dans "AFTER INSERT" déclencheur.
- Une solution de contournement viable consiste à effectuer d'abord l'insertion, puis à exécuter une mise à jour immédiate pour concaténer la valeur de la clé primaire avec la chaîne.
Alternative :
- Si la clé primaire n'est pas auto-incrémentée mais spécifiée, l'opération de concaténation peut être effectuée directement dans le code PHP avant de passer valeurs en tant que paramètres.
Remarque :
- Les colonnes générées par MySQL 5.7 ne peuvent pas prendre en charge ce scénario. Une tentative de création d'une colonne générée faisant référence à une colonne auto-incrémentée entraîne l'erreur "La colonne générée 'nom d'utilisateur' ne peut pas faire référence à une colonne à incrémentation automatique."
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!