【发布时间】:2010-06-13 09:18:48
【问题描述】:
所以,问题来了(这可能很简单:P)
这是我的表结构:
CREATE TABLE `users_awards` (
`user_id` int(11) NOT NULL,
`award_id` int(11) NOT NULL,
`duplicate` int(11) NOT NULL DEFAULT '0',
UNIQUE KEY `award_id` (`award_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
所以这是一个用户奖励系统。我不希望我的用户多次获得相同的奖励,这就是我有一个“重复”字段的原因。
我正在尝试的查询是这样的(样本数据为 3 和 2):
INSERT INTO users_awards (user_id, award_id)
VALUES ('3','2') ON DUPLICATE KEY UPDATE duplicate=duplicate+1
所以我的 MySQL 有点生疏了,但我将 user_id 设置为主键,将 award_id 设置为唯一键。这(某种)创造了预期的效果。
当用户 1 获得奖励 2 时,它进入了。如果他/她得到了两次,则表中只有一行,并且重复设置为 1。再次设置为 2,以此类推。
当用户 2 获得奖励 1 时,它进入了。如果他/她得到了两次,重复更新等等。
但是当用户 1 获得奖励 1 时(在用户 2 已经获得奖励之后),用户 2(带有奖励 1)的重复字段会增加,并且不会向用户 1 添加任何内容。
对不起,如果这有点不合情理。非常感谢您的帮助!
杰克
【问题讨论】: