11
votes

Y a-t-il un moyen de faire une rangée de mysql complète unique

J'ai une table dans MySQL avec 30 colonnes et des milliers d'entrées.
Existe-t-il une manière que je puisse faire chaque rangée unique, cela signifie que si une ligne existe déjà, je ne devrais plus pouvoir entrer cette rangée à nouveau.

Je ne peux pas utiliser des clés primaires ou uniques ici, car individuellement chaque colonne pourrait être répétée.
Je veux que la ligne soit unique. Par exemple: -Il y a-t-il une table avec xxx

dans cette colonne, je ne peux faire aucune ou deux colonnes unique mais je ne devrais pas avoir deux entrées de toutes les mêmes Données.


1 commentaires

Gardez à l'esprit erreur 1071 où combinant tant de colonnes peuvent créer des problèmes.


5 Réponses :


11
votes

Vous avez besoin d'une clé primaire composite.

Une clé primaire composite indique à MySQL que vous souhaitez que votre clé principale soit une combinaison de champs.

Plus d'infos ici: Pourquoi utiliser plusieurs colonnes comme touches principales (clé primaire composite)


2 commentaires

L'OP dit qu'elle ne peut pas utiliser les clés primaires à cet effet


@Raj Plus: À partir de la question, il semble que OP pense que PK ou Royaume-Uni ne peut s'appliquer qu'à une seule colonne à la fois, je pense que c'est une réponse valide.



2
votes

Vous pouvez créer un index unique sur plusieurs colonnes. Il suffit de mettre toutes les colonnes dans l'index. Si les colonnes sont grandes, vous pouvez rencontrer des problèmes avec la longueur maximale d'un index, mais l'essayer d'abord et voir.


0 commentaires

23
votes

Vous pouvez créer un index unique qui inclut toutes les colonnes de votre table xxx

de cette façon, vous pouvez conserver un incrémentation unique clé primaire à des fins de participation , tout en veillant à ce que toutes les données de votre table soient uniques.


1 commentaires

Le problème avec ceci est que les indices ont des longueurs maximales et de très longs index sont inefficaces.



5
votes

Vous pouvez créer une clé unique sur toutes les colonnes, pas des clés uniques individuelles sur chaque colonne. Cela signifie que la combinaison des valeurs sera unique - exactement ce dont vous avez besoin. Mais s'il vous plaît noter que si une colonne permet une valeur null, si la colonne contient une valeur null , elle sera comptée comme unique, même si une autre ligne contient les mêmes valeurs, avec null Pour la même valeur.


0 commentaires

2
votes

Vous pouvez utiliser les données et définir la valeur de hachage comme votre PK, cela garantira que les lignes sont uniques.


0 commentaires