Sql 如何创建其中一个字段不是主键的关联表?
我正在构建一个postgres数据库 我有两张桌子,产品(可口可乐)和可选(加冰块、柠檬……),也就是说,是一种多对多的关系 关联表通常是使用表的主键构建的,对吗?然而,在我的情况下,有一个特定的特点。。。由于从其他数据库导入了一些内容…我有两个id字段(id和“externalId”),一个主键和一个公共。。。一个是我所在银行的本地id,另一个表示项目在导入该项目的银行中的id 我需要一个“externalId”和另一个表的主键之间的关联表 ExternalId不是主键Sql 如何创建其中一个字段不是主键的关联表?,sql,database,postgresql,Sql,Database,Postgresql,我正在构建一个postgres数据库 我有两张桌子,产品(可口可乐)和可选(加冰块、柠檬……),也就是说,是一种多对多的关系 关联表通常是使用表的主键构建的,对吗?然而,在我的情况下,有一个特定的特点。。。由于从其他数据库导入了一些内容…我有两个id字段(id和“externalId”),一个主键和一个公共。。。一个是我所在银行的本地id,另一个表示项目在导入该项目的银行中的id 我需要一个“externalId”和另一个表的主键之间的关联表 ExternalId不是主键 ALTER TABLE
ALTER TABLE public.opcional_produto
Add
CONSTRAINT idproduto_fkey FOREIGN KEY (prod_id) REFERENCES public.produto (prod_idExt)
错误:没有唯一约束匹配的给定关键帧
引用表“produto”SQL状态:42830
我该怎么做?如果
externalid
是唯一的,您应该创建一个唯一的约束:
ALTER TABLE produto ADD UNIQUE (externalid);
理想情况下,它也不应为null:
ALTER TABLE produto ALTER externalid SET NOT NULL;
现在它可以用作外键的目标。请包括所有三个表的表设计:产品、选项和
opcional\u produto
。