相关疑难解决方法(0)

Postgresql强制执行唯一的双向组合列

我正在尝试创建一个表,该表将强制执行两个相同类型的两个列的唯一组合 - 在两个方向上.例如,这将是非法的:

col1 col2
   1    2
   2    1
Run Code Online (Sandbox Code Playgroud)

我想出了这个,但它不起作用:

database=> \d+ friend;
                                Table "public.friend"
    Column    |           Type           | Modifiers | Storage  | Stats target | Description
--------------+--------------------------+-----------+----------+--------------+-------------
 user_id_from | text                     | not null  | extended |              |
 user_id_to   | text                     | not null  | extended |              |
 status       | text                     | not null  | extended |              |
 sent         | timestamp with time zone | not null  | plain    |              |
 updated      | timestamp with time zone |           | plain …
Run Code Online (Sandbox Code Playgroud)

postgresql combinations unique

5
推荐指数
2
解决办法
918
查看次数

两列组合的唯一约束?

我一直在试图弄清楚是否有可能对两列的组合有一个唯一的约束。

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

我有一排像下面

A     B
1     2
Run Code Online (Sandbox Code Playgroud)

然后我希望以下组合在插入时失败

A     B
1     2
2     1
Run Code Online (Sandbox Code Playgroud)

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

ALTER TABLE test ADD CONSTRAINT test_constraint UNIQUE (a, b);
Run Code Online (Sandbox Code Playgroud)

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

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

sql postgresql

3
推荐指数
1
解决办法
783
查看次数

标签 统计

postgresql ×2

combinations ×1

sql ×1

unique ×1