SSMS
 sql >> Base de données >  >> Database Tools >> SSMS

SSMS autorise les enregistrements en double dans une table, mais pas les mises à jour ultérieures

Tout ce que le studio de gestion fait, c'est fournir une interface utilisateur pour créer du SQL pour vous et l'exécuter sur la base de données.

Dans votre cas, chaque fois que vous avez ajouté une ligne, cela a produit une instruction INSERT. C'est parfaitement valable.

Lorsque vous avez ensuite essayé d'utiliser l'interface utilisateur pour SUPPRIMER ou METTRE À JOUR un seul enregistrement parmi tous ces enregistrements en double, il n'a pas été en mesure de produire le SQL pour le faire. La raison étant que, comme il n'y avait pas de clé sur la table, il n'y a aucun moyen de produire une clause WHERE qui représenterait l'enregistrement que vous essayez de mettre à jour ou de supprimer.

Ses messages "d'erreur" me paraissent parfaitement clairs et valables.

Quant à vos commentaires :

À ma grande surprise, cela m'a également permis d'entrer "valeur1" sur la deuxième ligne et d'entrer vers le bas - cela devrait être impossible puisqu'il y a maintenant deux lignes identiques. Cependant, comme je ne faisais que déconner, cela ne m'a pas dérangé.

Évidemment, c'est étrange et ça brise la théorie relationnelle, mais je m'en fichais vraiment puisque c'est juste une table que j'ai créée pour m'amuser.

Il n'y a rien de mal à avoir une table de base de données qui autorise les doublons, c'est une chose parfaitement valable à faire si c'est ce dont vous avez besoin. Quant au fait de ne pas "se soucier" ou d'être "dérangé" que vous ayez autorisé les doublons. C'est là que réside l'erreur. C'est alors que vous auriez dû vous rendre compte que vous aviez oublié d'ajouter une clé primaire.