Maison >base de données >tutoriel mysql >Comment puis-je empêcher l'incrémentation automatique dans MySQL lors de l'insertion de lignes en double ?

Comment puis-je empêcher l'incrémentation automatique dans MySQL lors de l'insertion de lignes en double ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-21 01:08:13985parcourir

How Can I Prevent Auto-Increment in MySQL When Inserting Duplicate Rows?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn