postgresql 在PgAdmin中添加外键

zour9fqk  于 2023-03-17  发布在  PostgreSQL
关注(0)|答案(3)|浏览(548)

我有下面的studidtemplates表:

template_id是主键

我想创建一个新表,将template_id引用为foreign key。它的名称为studidtemplatetextelements。请参见下图:

我在第二个表中创建了一个列template_id,并希望将其作为一个外键引用studidtemplates表中的template_id,我通过单击Constraints选项卡中的按钮(如下图中的箭头所示)完成了此操作。

我注意到一些不同的东西。在“引用”选项中没有template_id选项可用。请参见下图:

我错过了什么?

xyhw6mcr

xyhw6mcr1#

在pgAdmin 4中,步骤如下:
1.右键单击表格并选择属性
1.在出现的对话框中,单击约束/外键
1.单击外键表右上角的**+图标。
1.单击
铅笔图标**,该图标一直位于现在显示在外键表中的新行的左侧。
1.在 General 选项卡下,给予外键命名(我遵循 {tablename}_{columnname}_fkeythis convention)。
1.在 * 列 * 选项卡下,选择您的参考。
1.单击“本地列”右侧的**+图标。
1.单击底部的
保存**按钮。
下面是截图:

r1wp621o

r1wp621o2#

Referencing下列出的列是属于选定表的列。
您需要按如下方式更改References中的选定表:

您使用的是哪个版本的pgAdmin?在版本1.16中,References文本框被移动到Columns选项卡:
在外键属性对话框中,“References”表文本框已移动到第三个选项卡

w8f9ii69

w8f9ii693#

对我来说,更方便的是查询工具(用于用户想要使用的特定数据库)。
单击图标或Alt + Shift + Q访问查询工具

在我的例子中,我希望添加products(通过要添加的名为added_by的字段)和users(具体地说,id)之间的关系,因此我使用ALTER TABLE执行以下脚本

ALTER TABLE public.products ADD COLUMN added_by integer;
ALTER TABLE public.products ADD CONSTRAINT products_added_by_fkey FOREIGN KEY (added_by) REFERENCES public.users (id);

现在可以看到字段added_by和约束products_added_by_fkey

如果检查约束的属性,将在[列]选项卡中看到以下内容

备注

  • 如果问题只是添加外键约束,假设字段已经存在,请参见上一个脚本的最后一行,或PostgreSQL documentation中给出的以下示例:
ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses (address);

相关问题