MySQL faire une combinaison de colonnes unique

j'ai une table qui stocke les commentaires que les utilisateurs font sur les images sur le site. La table est structurée avec quatre colonnes, row_id, qui est la clé primaire, image_id, user_id et le commentaire. Ce que je veux faire, c'est m'assurer qu'un utilisateur ne peut laisser qu'un commentaire par image. Est-ce que je crée simplement un index unique sur les deux colonnes?

CREATE UNIQUE INDEX imgusr ON comments (image_id, user_id);

L'idée est d'obtenir la requête suivante:

INSERT INTO comments SET image_id = '1', user_id = '2', comment = 'nice' ON DUPLICATE KEY UPDATE comment = 'nice';

le gotchya (gotme?) est que la table est innoDB parce que il devrait être très grande. Est-ce l'approche de travail, malgré la présence d'une clé primaire?

21
demandé sur Wige 2011-05-11 00:07:00

1 réponses

Oui cela fonctionnera parfaitement.

Dans un autre sujet, pourquoi vous avez un row_id? Vous pouvez simplement mettre la clé primaire (image_id, user_id), cela fonctionne aussi.

12
répondu krtek 2011-05-10 20:10:23