【发布时间】:2012-02-21 12:01:25
【问题描述】:
在用于记录帖子投票的表格中
CREATE TABLE votes
(
vote_id int(11) NOT NULL AUTO_INCREMENT,
post_id int(11) REFERENCES posts(post_id) ON DELETE CASCADE,
user_id int(11) REFERENCES users(user_id) ON DELETE SET NULL,
vote ENUM('Up', 'Down'),
ip varchar(255),
UNIQUE INDEX (on which???)
PRIMARY KEY(vote_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci
如何添加UNIQUE INDEX以避免重复投票?如果投票者是用户,UNIQUE INDEX 应该适用于 (post_id, user_id);如果不是用户,UNIQUE INDEX 应该适用于 (post_id, ip)。
其实我只需要UNIQUE INDEX for (post_id, user_id) OR (post_id, ip);但不是两者兼而有之。
【问题讨论】:
标签: mysql sql unique unique-constraint