Je souhaite avoir une table de correspondance qui relie deux des mêmes éléments. Dites que j'ai une table «Personne» et je veux rechercher la relation entre deux personnes. Je vais avoir la colonne un de la recherche soit 'PersonId1' et la colonne deux soit 'PersonId2' et la troisième colonne soit 'Relationship'. Comme la relation va dans les deux sens, je n'ai pas besoin d'avoir des enregistrements en double avec le PlayerId commuté. Est-il possible de faire en sorte que mysql impose l'unicité sur les combinaisons PlayerId1 et PlayerId2, quel que soit l'ordre dans lequel elles se trouvent?Clé primaire composite Mysql
Est-ce que cela a du sens?
Oui, mais si PersonId1 est 9 et 10 est PersonId2 dans un enregistrement mais dans un autre PersonId1 est 10 et personId2 9. Cela redéfinit la même relation. Je me demandais s'il y avait un moyen d'empêcher cela. – ForeverNoobie
Si la commande est votre cas, vous pouvez utiliser un seul champ ayant le type de données 'varchar', puis concaténer' PersonId1' et 'PersonId2'. Et n'oubliez pas de le faire comme votre clé primaire. –
Vous devez essayer de les insérer par paires ou cela ne fonctionnera pas. 'INSERT INTO relation (PersonId1, PersonId2) VALUES (9,10), (10,9)' et la transaction échouera si une ou plusieurs de ces paires sont en conflit. – tadman