2列中的PostgreSQL 10约束?

时间:2018-05-23 22:28:54

标签: php sql postgresql

是否可以添加一个约束来检查PostgreSQL 10中的TWO列是否唯一?我环顾四周,但无法找到与我的具体需求相关的任何内容。

我的问题是我必须跟踪与辅助ID(集线器)相关联的个人ID(标记)。我无法将我的标记ID设置为唯一,因为它们会多次出现与集线器ID相关联。我也无法设置唯一的集线器ID,因为它们会有一堆与之关联的标记ID。

有没有办法说(标签123和集线器456)是唯一的,但如果集线器是789,仍然可以记录标签123,反之亦然?

这是因为ON CONSTRAINT DO UPDATE看起来没有独特的限制,我现在卡住了。

参考,解决方案,已解决的其他相关问题,任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

您需要定义由这两列组成的primary key。这样,表中的两行或多行可以在主键的第一列上具有相同的值,但在第二列上具有不同的值,反之亦然。

此外,如果您还没有,可以使用pgAdmin,这是一个可视化工具,可帮助您创建数据库并定义表,列,数据类型,约束,主键等。用户界面简单。

答案 1 :(得分:1)

索引可以在多个列上

CREATE UNIQUE INDEX name ON table (tag,hub);

11.6. Unique Indexes