代码之家  ›  专栏  ›  技术社区  ›  T1960CT

PostgreSQL 10跨2列约束?

  •  0
  • T1960CT  · 技术社区  · 7 年前

    是否可以添加一个约束来检查PostgreSQL 10中的两列是否唯一?我环顾四周,但找不到任何与我的特殊需要有关的东西。

    我的问题是,我必须跟踪与辅助ID(hub)关联的单个ID(tag)。我不能将我的标记ID设置为唯一的,因为它们将出现多次与中心ID关联。我也不能将集线器ID设置为唯一的,因为它们将有一组与之相关联的标记ID。

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

    这的根本原因是,没有唯一的约束,on约束do update似乎无法工作,现在我陷入困境。

    参考,解决方案,其他相关问题已解决,任何帮助都将不胜感激!

    2 回复  |  直到 7 年前
        1
  •  1
  •   user9487972    7 年前

    索引可以在多个列上

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

    11.6. Unique Indexes

        2
  •  2
  •   Kenna    7 年前

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

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