Sql 两个 multique unique 在第一个 case ocours 时忽略

Sql two multique unique ignore when first case ocours

我的 table 有四列 cityzipcodenumberextra。我为 cityzipcodenumber 创建了一个名为 unique1 的独特组,并为 cityzipcodenumberextra 调用了 unique2。这些组需要是唯一的,但问题是当 extra 不同或为空时,我可以有非唯一值。例如:

 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”上的唯一规则冲突,我也想插入该信息。

放弃 unique1,unique2 应该会处理它。

在MySQL中,使用唯一索引来处理超出简单数据约束的数据约束并不是一个好主意。其他更昂贵的 table 服务器有更精细的方式来描述约束。

您的第一个唯一索引(您称之为 "group") -- unique1 -- 防止您的示例中的第二行被插入到您的 table。

编辑:您的示例表明您需要前三列的非唯一值。

我有点猜测,但我认为您应该放弃 unique1,而只使用 unique2。