use*_*760 4 postgresql constraint unique-constraint
我在 Postgres 数据库中有一个表,其中col1
和col2
是指同一列的外键。我只想要 的唯一组合(col1, col2)
,即如果(1,2)
输入则(2,1)
应该被拒绝。我怎样才能做到这一点?
我的表定义:
CREATE TABLE mytable (
id serial primary key,
col1 int NOT NULL,
col2 int NOT NULL,
unique (col1, col2)
)
Run Code Online (Sandbox Code Playgroud)
可以使用此唯一索引强制执行此唯一性约束:
CREATE UNIQUE INDEX idxname ON mytable(least(col1,col2),greatest(col1,col2));
Run Code Online (Sandbox Code Playgroud)
演示:
test=> 插入到 mytable (col1,col2) values(1,2); 插入 0 1 test=> 插入到 mytable (col1,col2) values(2,1); 错误:重复键值违反唯一约束“idxname” 详细信息:键 ((LEAST(col1, col2)), (GREATEST(col1, col2)))=(1, 2) 已经存在。
归档时间: |
|
查看次数: |
335 次 |
最近记录: |