Mysql
 sql >> Base de données >  >> RDS >> Mysql

Empêcher les entrées SQL en double

CREATE UNIQUE INDEX idxname ON tablename (fieldname);

L'ajout de cet index garantira qu'aucune entrée en double pour fieldname le champ sera enregistré dans tablename tableau.

Vous obtiendrez une erreur MySQL avec le deuxième client. Vous devriez gérer cela dans votre code PHP et relancer le formulaire (au lieu de simplement afficher le message d'erreur).

Une autre possibilité (pour des situations plus complexes) est le LOCK Fonctionnalité. Si vous verrouillez la table avant de vérifier et que vous insérez ensuite votre enregistrement, une opération simultanée (dans la deuxième fenêtre du navigateur) sera retardée jusqu'à ce que vous libériez les verrous. Ensuite, l'enregistrement sera déjà enregistré, donc le deuxième script PHP le verra et gérer la situation.