1

在 mysql 中是否可以使两列唯一,但是如果在另一列中找到插入到一列中的值被认为是重复的?

我试过这个代码,它不起作用:

ALTER TABLE test 
ADD UNIQUE myunique ( col1 ,col2 ) 

编辑:

感谢您的回答,我会找到其他解决方案,但避免使用触发器的解决方案

4

2 回答 2

2

不,本机 MySQL 约束无法做到这一点。

UNIQUE ( col1 ,col2 ) 会认为两列的“组合”是独一无二的。所以 (a,a) 是允许的,除非已经有另一个 (a,a)。这似乎不是你想要的。

您可以尝试使用触发器,但这相当笨拙。

为什么需要两列?如果这些列代表相同的项目(因为不允许重复),那么一列不是更好吗?如果还有其他差异,您可以为“排名”添加第二列......

于 2012-04-04T07:29:54.993 回答
-1

你的代码

 ALTER TABLE test 
ADD UNIQUE myunique ( col1 ,col2 ) 

不起作用,因为它创建了一个复合的唯一索引,这使得 col1 和 col2 中的重复条目分开。正如你所说,你不需要这个。

我还没有尝试过,但你有没有为你的目的尝试过触发器?

于 2012-04-04T07:30:31.353 回答