无论顺序如何,两列的唯一约束

nim*_*wfc 1 sql postgresql create-table unique-constraint

我有一个非常简单的表:

    id  | name   | alternate
--------+--------+------------
     1  |   Joe  |     Joseph
--------+--------+------------
     2  |   Pete |     Peter
--------+--------+------------
Run Code Online (Sandbox Code Playgroud)

等等。

我想在名称和备用列上添加约束,但与顺序无关。例如,我不希望能够插入(3, 'Peter', 'Pete'),因为它本质上与 id 2 相同,只是列颠倒了。

有没有办法做到这一点?

Lau*_*lbe 7

Create a unique index:

CREATE UNIQUE INDEX ON atable
   (LEAST(name, alternate), GREATEST(name, alternate));
Run Code Online (Sandbox Code Playgroud)