我的表有四个列city
,zipcode
,number
和extra
。我为city
,zipcode
和number
创建了唯一的组,称为unique1
,为city
,zipcode
,number
和extra
被称为unique2
。这些组必须是唯一的,但是问题是,当extra
不同或为null时,我可以具有非唯一值。例如:
city | zipcode | number | extra
A 123 123 null
A 123 123 10 (I cant add this row because of the unique groups)
如何解决此问题? (我正在使用Mysql)
换句话说,我需要的是一种方法:
1)如果extra为null,则城市,邮政编码和编号的分组必须唯一 2)如果extra不为空,即使新行与唯一规则“ 1”相冲突,我也想插入该信息。
答案 0 :(得分:0)
丢弃unique1,unique2应该照顾好它。
答案 1 :(得分:0)
在MySQL中,使用唯一索引来处理简单约束之外的数据约束不是一个好主意。其他更昂贵的表服务器具有更复杂的方式来描述约束。
您的第一个唯一索引(您称其为“组”)-unique1-防止示例中的第二行插入到表中。
编辑:您的示例显示,前三列要求使用非唯一值。
我有点猜测,但是我认为您应该删除unique1并仅使用unique2。