SQL两个多que唯一的情况发生时忽略

时间:2019-07-24 22:11:38

标签: mysql sql indexing unique-constraint unique-key

我的表有四个列cityzipcodenumberextra。我为cityzipcodenumber创建了唯一的组,称为unique1,为cityzipcodenumberextra被称为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”相冲突,我也想插入该信息。

2 个答案:

答案 0 :(得分:0)

丢弃unique1,unique2应该照顾好它。

答案 1 :(得分:0)

在MySQL中,使用唯一索引来处理简单约束之外的数据约束不是一个好主意。其他更昂贵的表服务器具有更复杂的方式来描述约束。

您的第一个唯一索引(您称其为“组”)-unique1-防止示例中的第二行插入到表中。

编辑:您的示例显示,前三列要求使用非唯一值。

我有点猜测,但是我认为您应该删除unique1并仅使用unique2。