【问题标题】:Unique constraint on combination of two columns?对两列组合的唯一约束?
【发布时间】:2016-02-24 21:25:12
【问题描述】:

我一直在试图弄清楚是否可以为两列的组合设置唯一约束。

具体来说,我有两列 A 和 B。

我有如下一行

A     B
1     2

那么我希望以下组合在插入时失败

A     B
1     2
2     1

我尝试添加一个简单的约束

ALTER TABLE test ADD CONSTRAINT test_constraint UNIQUE (a, b);

但这让我可以在(1, 2) 已经存在时插入(2, 1)

这可能吗?还是我必须在插入之前检查组合是否存在?

【问题讨论】:

  • 在您的示例中,您希望 (2,1) 失败,因为已经存在 (1,2) ??
  • @JuanCarlosOropeza 是的

标签: sql postgresql


【解决方案1】:

您可以使用表达式上的索引来做到这一点:

create unique index unq_test_a_b on (test(least(a, b), greatest(a, b));

我不认为unique 约束允许表达式(并且现在没有方便的 Postgres 进行测试),但这本质上是一样的。

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 2013-03-25
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多