在mysql中是否可以使两列唯一,但如果在另一列中找到,则在一列中插入的值被视为重复?
我尝试过这段代码,但它不起作用:
ALTER TABLE test
ADD UNIQUE myunique ( col1 ,col2 )
编辑:
感谢您的回答,我会找到其他解决方案,但要避开带触发器的解决方案
答案 0 :(得分:2)
您的UNIQUE ( col1 ,col2 )
会认为两列的“组合”都是唯一的。所以(a,a)是允许的,除非已经存在另一个(a,a)。这似乎不是你想要的。
您可以尝试使用触发器,但这非常笨拙。
为什么需要两列?如果列代表相同的项目(因为不允许重复),一列不会更好吗?如果存在其他差异,您可以为“排名”添加第二列......
答案 1 :(得分:-1)
您的代码
ALTER TABLE test
ADD UNIQUE myunique ( col1 ,col2 )
不起作用,因为它创建了一个复合的唯一索引,它使col1和col2中的重复条目分开。正如你所说,你不需要这个。
我还没有尝试过,但你为了你的目的尝试过触发器吗?