【问题标题】:How to create associative table where one of the fields is not primary key?如何创建其中一个字段不是主键的关联表?
【发布时间】:2019-08-23 18:06:00
【问题描述】:

我正在构建一个 postgres 数据库。

我有两张表,products(可乐)和 optional(with ice、lemon...),也就是多对多的关系。

关联表通常是使用表的主键构建的,对吗?但是,就我而言,有一个特定的功能......由于从其他数据库导入了一些......我有两个 ids 字段(id 和“externalId”),一个主键和一个通用......一个是本地的我的银行的 id,另一个代表该项目在其进口银行中的 id。

我需要一个“externalId”和另一个表的主键之间的关联表。

ExternalId 不是主键...

ALTER TABLE public.opcional_produto
Add 
CONSTRAINT idproduto_fkey FOREIGN KEY (prod_id) REFERENCES public.produto (prod_idExt)

错误:没有与给定键匹配的唯一约束 引用表“produto”SQL 状态:42830

我该怎么办?

【问题讨论】:

  • 请包括所有三个表格的表格设计:产品、选项和opcional_produto

标签: sql database postgresql


【解决方案1】:

如果externalid 是唯一的,你应该创建一个唯一的约束:

ALTER TABLE produto ADD UNIQUE (externalid);

理想情况下它也不应该为空:

ALTER TABLE produto ALTER externalid SET NOT NULL;

现在它可以用作外键的目标。

【讨论】:

    猜你喜欢
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    相关资源
    最近更新 更多