J'ai une table structurée comme suit:Vérifiez les doublons dans une base de données et de les supprimer
table(A, B)
Ils sont les deux clés primaires et ils sont nécessaires pour connecter deux entrées dans une autre table (ils simbolize une amitié entre utilisateurs).
Je dois vérifier la table et, si (A, B) existe, supprimer un éventuel (B, A) (ou vice versa).
Étant donné que la base de données est énorme, je ne peux pas le faire manuellement pour chaque entrée à chaque fois.
Bien sûr, j'ai programmé le script qui peuplait la base de données pour vérifier cette situation et l'éviter, mais nous avons utilisé ce script sur 8 PC différents et donc les différents dumps peuvent avoir des "reverse duplicates".
Voulez-vous nettoyer une table de base de données existante ou l'empêcher à l'avenir? Sûrement un déclencheur sur insertion/mise à jour pourrait rapidement valider si l'enregistrement inverse est présent? Dans ce cas, vous devez simplement exécuter un exercice unique de nettoyage des données existantes (qui ne doit pas être exécuté rapidement) –
Vous ne pouvez pas déclarer les clés dans les deux sens? Comme dans, UNIQUE (a, b) et UNIQUE (b, a)? Ensuite, la base de données elle-même appliquerait vos contraintes sans même avoir besoin de déclencheurs. – Borealid
Je sais qu'il est trop tard maintenant, mais ce problème aurait pu être évité par l'application: A et B sont généralement ids et votre application ne devrait enregistrer les paires dans la table où A
Robert