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
Libérer: 2024-11-21 01:08:13
original
984 Les gens l'ont consulté

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal