我正在尝试创建一个表,该表将强制执行两个相同类型的两个列的唯一组合 - 在两个方向上.例如,这将是非法的:
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) 我一直在试图弄清楚是否有可能对两列的组合有一个唯一的约束。
具体来说,我有两列 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)已经存在时插入。
这是可能的吗?或者我必须在插入之前检查组合是否存在?