MySQL需要依赖于链接列的唯一列值

MySQL需要依赖于链接列的唯一列值,mysql,Mysql,对不起,如果以前有人问过这个问题,但是我似乎找不到我要找的东西。(除了让PHP替我做检查之外) 我有一张像这样的桌子: ukey | dvar | dval 123 is_act true 123 is_act true 321 is_act true 321 active false 我想做的是基于ukey dvar和ukey行对必须是唯一的 因此,在我的测试用例中,表实际上应该如下所示: ukey | dvar | dval 123 is_act t

对不起,如果以前有人问过这个问题,但是我似乎找不到我要找的东西。(除了让PHP替我做检查之外)

我有一张像这样的桌子:

ukey | dvar | dval
123   is_act   true
123   is_act   true
321   is_act   true
321   active   false
我想做的是基于
ukey

dvar
ukey
行对必须是唯一的

因此,在我的测试用例中,表实际上应该如下所示:

ukey | dvar | dval
123   is_act   true
321   is_act   true
321   active   false
我已经在根据
ukey
/
dvar
组合检查数据库,但是我想知道我所要求的是否可以约束
MySQL

我想做的是基于 尤基

是的,将make(dvar,ukey)作为主键

PRIMARY KEY (dvar, ukey)
或者,在两个列上创建唯一的键约束

ALTER TABLE test
   ADD CONSTRAINT uniqueconstraint UNIQUE(dvar, ukey);

“一个ukey只能连接到唯一的dvar”。。。但根据您的“应该看起来像”示例,
321
附加到
is\u act
active
@uuerdo yes,这是唯一的
ukey
dvar
行。编辑以减少混乱。那么Rahul下面的答案应该正是您需要的。这是否有效,因为
dvar
本身并不要求是唯一的。唯一的事件
dvar
是针对
ukey
进行测试时唯一的事件。两个
ukey
s可以具有相同的dvar,但相同的
ukey
可能没有非唯一的
dvar
s@HydraIO对多个字段的唯一约束只强制要求这些字段的值的组合必须是唯一的(NULL除外),而不是每个字段的值必须独立唯一。@rahul,谢谢。两个COL上的
唯一
解决了这个问题。@HydraIO,这就是为什么我将它们作为复合键。看看答案。也就是说,通过组合,它们应该是唯一的。