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

Comment vérifier si la valeur existe déjà dans la table ?

Utilisez une unique constraint . Essayez d'insérer/mettre à jour l'enregistrement et interceptez l'exception levée lorsque la contrainte unique est violée. C'est le seul moyen de garantir une adresse e-mail unique; la première vérification puis la mise à jour sont sujettes aux problèmes de simultanéité car il est possible que quelqu'un d'autre mette à jour son enregistrement avec la même valeur que vous essayez de définir juste après avoir effectué la vérification et avant de mettre à jour l'enregistrement.

Aussi :apprenez à utiliser where -clauses. Vous récupérez maintenant TOUS les enregistrements, les parcourez, etc., ce qui prend inutilement beaucoup de ressources, prend trop de temps et n'est qu'un simple gaspillage. Si vous souhaitez rechercher un enregistrement correspondant à un critère que vous écrivez :

Select foo, bar from table where baz = 123

baz = 123 est votre critère. Imaginez ce qui se passerait si vous aviez 500, voire 500 000 enregistrements dans votre configuration actuelle. La base de données exécuterait votre requête, rassemblerait TOUTES les lignes de cette base de données, les transférerait vers votre application où votre application itérerait les 500 000 résultats. Ou vous demandez à la base de données de faire ce pour quoi elle est bonne (et pourquoi vous l'utilisez en premier lieu) :donnez-moi le/les enregistrement(s) qui correspondent au critère X. Vous obtiendrez 1 ou aucun enregistrement (étant donné l'unique contrainte) :1 =certains enregistrements correspondent à votre critère, aucun =aucun enregistrement n'existe. Évite de transférer et "d'avoir à consulter manuellement" 499 999 enregistrements ;-)