Empêcher l'incrémentation automatique lors d'une insertion en double dans MySQL
Lorsque vous travaillez avec des tables MySQL contenant des clés primaires à incrémentation automatique, il peut être difficile de empêcher l’incrémentation lors de l’insertion de lignes en double. Ce problème se pose particulièrement lorsque vous travaillez avec des champs uniques et utilisez des instructions telles que INSERT IGNORE.
Pour résoudre ce problème, une instruction d'insertion modifiée peut être utilisée :
INSERT INTO tablename (tag) SELECT $tag FROM tablename WHERE NOT EXISTS( SELECT tag FROM tablename WHERE tag = $tag ) LIMIT 1
Cette instruction vérifie si la balise existe déjà dans la table à l'aide d'une requête SELECT imbriquée. Si elle existe, l'instruction INSERT ne s'exécute pas, empêchant l'auto-incrémentation. Cette approche est efficace si la table est correctement indexée, car la requête SELECT supplémentaire sera rapide.
Pour la première insertion de balise, une vérification distincte d'une table vide ou l'amorçage de la table avec une balise fréquemment utilisée est requis. . Cette approche évite efficacement l'incrémentation inutile de la clé primaire en cas de tentatives d'insertion en double.
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!