J'ai une table user
avec userID
comme clé primaire. J'ai une autre table appelée Friends
. Dans la table Friends
, j'ai deux utilisateurs comme amis représentés par les colonnes UserID
et FrndID
où les deux UserID
et FrndID
doivent être un userID
dans le tableau user
.
Je veux faire respecter l'intégrité des données. Puis-je utiliser quelque chose comme ça?
ADD CONSTRAINT `ufd_users_fk` FOREIGN KEY (`userId`, `friendId`)
REFERENCES `users` (`userId`, `userId`) ON DELETE CASCADE ON UPDATE CASCADE;
Je veux savoir est REFERENCES
users(
identifiant d'utilisateur,
identifiant d'utilisateur)
référencer correctement une colonne plusieurs fois? La raison pour laquelle je ne crée pas 2 contraintes distinctes, c'est que les deux utilisateurs doivent exister dans la table user
.
Non, vous devez créer deux clés étrangères:
ADD CONSTRAINT `ufd_users_fk` FOREIGN KEY (`userId`)
REFERENCES `users` (`userId`)
ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `ufd_users_fk` FOREIGN KEY (`friendId`)
REFERENCES `users` (`userId`)
ON DELETE CASCADE ON UPDATE CASCADE;