小编gli*_*gli的帖子

postgresql对两列(或数组)中任何整数的唯一约束

如何保证两列/数组中任何整数的唯一性?

示例:我创建一个表并在其中插入一行:

CREATE TABLE mytest(a integer NOT NULL, b integer NOT NULL);
INSERT INTO mytest values (1,2);
Run Code Online (Sandbox Code Playgroud)

UNIQUE INDEX应该创建什么以不允许添加以下任何值

INSERT INTO mytest values (1,3); # because 1 is already there
INSERT INTO mytest values (3,1); # because 1 is already there
INSERT INTO mytest values (2,3); # because 2 is already there
INSERT INTO mytest values (3,2); # because 2 is already there
Run Code Online (Sandbox Code Playgroud)

如果它有所帮助,我可以有两个元素的数组而不是两列.

当然,我可以发明一些解决方法,以下是我的想法:

  • 为所有数字创建单独的表,在unique index那里,并使用事务向两个表添加值.如果该数字不唯一,则不会将其添加到第二个表中,并且事务失败
  • 添加两行而不是一行,并为其添加其他字段id-of-the-pair.

但我希望有一个表,我需要一行,其中包含两个元素.那可能吗?

postgresql

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

标签 统计

postgresql ×1