【问题标题】:Add partial uniqueness constraint in postgres on a row such that one value is okay to duplicate在一行的 postgres 中添加部分唯一性约束,以便可以复制一个值
【发布时间】:2020-11-05 08:38:47
【问题描述】:

我想创建一个电子邮件表emails,其中“电子邮件”列中的所有值都必须是唯一的,但“redacted@redacted.com”占位符除外。示例:

  • foo@gmail.com
  • bar@gmail.com
  • redacted@redacted.com
  • zoo@gmail.com
  • redacted@redacted.com
  • hey@gmail.com
  • redacted@redacted.com

我在 postgres 文档中看到允许 null 值不重复很简单,但是有没有办法用另一个值来做到这一点?

【问题讨论】:

    标签: sql postgresql unique unique-constraint


    【解决方案1】:

    您可以创建过滤的唯一索引:

    create unique index unq_emails_email on (email)
        where email <> 'redacted@redacted.com';
    

    【讨论】:

    • 谢谢!这是一个外推版本,以防将来有人正在寻找更通用的文档。 create unique index &lt;indexname&gt; on &lt;tablename&gt; (&lt;columnname&gt;) where &lt;columnname&gt; &lt;&gt; &lt;value&gt;;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 2014-02-14
    • 2022-01-18
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多