Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何创建其中一个字段不是主键的关联表?_Sql_Database_Postgresql - Fatal编程技术网

Sql 如何创建其中一个字段不是主键的关联表?

Sql 如何创建其中一个字段不是主键的关联表?,sql,database,postgresql,Sql,Database,Postgresql,我正在构建一个postgres数据库 我有两张桌子,产品(可口可乐)和可选(加冰块、柠檬……),也就是说,是一种多对多的关系 关联表通常是使用表的主键构建的,对吗?然而,在我的情况下,有一个特定的特点。。。由于从其他数据库导入了一些内容…我有两个id字段(id和“externalId”),一个主键和一个公共。。。一个是我所在银行的本地id,另一个表示项目在导入该项目的银行中的id 我需要一个“externalId”和另一个表的主键之间的关联表 ExternalId不是主键 ALTER TABLE

我正在构建一个postgres数据库

我有两张桌子,产品(可口可乐)和可选(加冰块、柠檬……),也就是说,是一种多对多的关系

关联表通常是使用表的主键构建的,对吗?然而,在我的情况下,有一个特定的特点。。。由于从其他数据库导入了一些内容…我有两个id字段(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


我该怎么做?

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

ALTER TABLE produto ADD UNIQUE (externalid);
理想情况下,它也不应为null:

ALTER TABLE produto ALTER externalid SET NOT NULL;

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

请包括所有三个表的表设计:产品、选项和
opcional\u produto