2010-08-30 3 views
2

Pour éviter les entrées de table en double dans une base de données, j'utilise une clé primaire. Je viens d'ajouter l'information et s'il s'agit d'un doublon alors le primaire sera un doublon et il ne sera pas ajouté à la table.Empêcher les entrées de table de base de données en double

Devrais-je également faire une requête SQL (avant d'essayer d'ajouter à la base de données) pour voir si l'entrée existe? Ou est-ce redondant puisque j'ai déjà la clé primaire?

Répondre

5

Il est redondant de vérifier la présence d'une valeur si vous avez déjà une contrainte pour éviter les doublons.

Mais il serait également inefficace de vérifier avant d'insérer, car un autre client concurrent pourrait insérer cette valeur dans le moment entre votre vérification et votre insertion. Donc, même si vous vérifiez d'abord, vous devez toujours gérer les erreurs de clé en double.

0

Avec la plupart des plates-formes de base de données, lorsque vous créez la clé primaire, l'opération échoue s'il existe des entrées en double, il ne devrait donc pas être nécessaire d'effectuer un test préalable.

0

Généralement, vous obtenez une exception ou un code d'erreur de l'appel au moteur SQL. Si vous devez gérer cela ou non, cela dépend de la logique de votre application. Par exemple, s'il s'agit d'un nouveau nom d'utilisateur, et qu'il existe déjà dans la base de données, l'exception fait partie de la logique de votre application et vous devez indiquer à l'utilisateur pourquoi l'inscription a échoué.

1

La définition de "contrainte unique" sur la table avec la colonne souhaitée corrige tout. S'il y a un doublon, vous obtiendrez une erreur.

Questions connexes