Php 组合唯一的MySQL表
所以,问题来了(可能很简单:p) 这是我的表格结构:Php 组合唯一的MySQL表,php,mysql,Php,Mysql,所以,问题来了(可能很简单: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 这是一个用户奖励系统。
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):
所以我的MySQL有点生锈,但我将user\u id
设置为主键,award\u id
设置为唯一键。这(某种)产生了想要的效果
当用户1获得奖励2时,它输入。如果他/她得到两次,表中只会有一行,并且将duplicate设置为1。第二,等等
当用户2获得奖励1时,它输入。如果他/她收到这两次,复制更新等
但是当用户1被授予奖励1(在用户2已经被授予奖励后),用户2(具有奖励1)的重复字段将增加,并且不会向用户1添加任何内容
抱歉,如果这有点不对劲的话。非常感谢你的帮助
Jack您是否意识到在列的组合上可以有唯一的约束
将您的密码更改为
(用户id、奖励id)
。事实上,这应该是表的主键。然后,您的查询将按您的预期工作。谢谢!我不知道一个独特的约束可以在多个列上。。。我想这很重要!:D我添加了这个,现在一切正常。干杯
INSERT INTO users_awards (user_id, award_id)
VALUES ('3','2') ON DUPLICATE KEY UPDATE duplicate=duplicate+1