2011-05-10 71 views
21

我有一张表,用于存储用户在网站上对图像所做的评论。该表由四列构成,row_id是主键,image_id,user_id和注释。我想要做的是确保用户只能为每个图像留下一条评论。我只需在两列上创建一个唯一索引?MySQL使列的组合唯一

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

的想法是让下面的查询工作:

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

的gotchya(?gotme)是该表是InnoDB的,因为它有望获得非常大的。尽管存在主键,这是否可行?

+0

你试过了吗?你是否担心它失败,或者它表现不佳? – outis 2011-05-10 20:12:06

+0

两者。我实际上正在从一个系统转换到另一个系统,并且最初的表格将会相当庞大(立即有400万行,预计在前几周内将增长到2000万),所以我想确保我正在进行此操作从一开始就是正确的方式。 – Wige 2011-05-10 20:34:31

回答

12

是的,这将工作完美。

在另一个话题中,为什么你有一个row_id?你可以简单地把主键作为,这也可以。

+0

我没有意识到我可以在InnoDB表中做到这一点。感谢您的建议。 – Wige 2011-05-10 20:34:51