mysql有两个唯一列,如果插入另一个col,则一个col中的值被认为是重复的

时间:2012-04-04 07:25:02

标签: mysql sql unique

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

我尝试过这段代码,但它不起作用:

ALTER TABLE test 
ADD UNIQUE myunique ( col1 ,col2 ) 

编辑:

感谢您的回答,我会找到其他解决方案,但要避开带触发器的解决方案

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:-1)

您的代码

 ALTER TABLE test 
ADD UNIQUE myunique ( col1 ,col2 ) 

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

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