【问题标题】:Sql two multique unique ignore when first case ocours当第一个案例出现时,Sql 两个 multique 唯一忽略
【发布时间】:2019-07-24 22:11:38
【问题描述】:

我的表有四列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 不为 null,即使新行与 '1' 上的唯一规则冲突,我也想插入该信息。

【问题讨论】:

  • 为什么不 change extra 而不是添加一行? (使用UPDATE
  • @RickJames 因为我需要这两行。当 extra 不同或 null 时,它们是不同的

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


【解决方案1】:

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

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

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

我猜了一下,但我认为你应该放弃 unique1 而只使用 unique2。

【讨论】:

  • 嗯,问题是我的 unique1 案例将有非唯一值
  • 您能否编辑您的问题以更详细地描述您的要求?
  • 我编辑了。但这就是你所说的,但我不能删除 unique1,因为我需要为 unique1 设置唯一值,因为如果我删除它,我将拥有城市、邮政编码和数字等于,对吗?
  • 删除记录2,删除unique1,然后重新添加记录2
【解决方案2】:

删除 unique1,unique2 应该处理它。

【讨论】:

    猜你喜欢
    • 2021-07-10
    • 2017-08-05
    • 2020-06-30
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    相关资源
    最近更新 更多