如何在PostgreSQL中使用Ref ID或Foreign Key约束对不同表中的所有相关行执行级联效果的行删除?如果可能的话,我想在pgadmin4 GUI中使用此功能。
当我试图删除一行时,它给出以下错误,SQL Error [23503]: ERROR: update or delete on table "tbl_xyz" violates foreign key constraint "tbl_abc_id_2b79de29_fk_tbl" on table "tbl_abc" Detail: Key (id)=(110) is still referenced from table "tbl_abc".
1条答案
按热度按时间ccrfmcuu1#
这当然是可能的。PostgreSQL在删除行时的行为取决于外键的属性。在我看来,应该始终设置
ON DELETE
和ON UPDATE
设置,以便用户意识到行为。ON DELETE
操作具有以下选项:|行动|描述||:--|:-||没有行动|如果存在引用对象,则防止删除父对象。在提交时进行检查。(预设值)||限制|如果存在引用对象,则防止删除父对象。在命令后立即进行检查。||级联|删除父项时,也会删除所有子项||SET NULL|删除父级时,parent_id
字段对于所有引用行都设置为空。||SET NULL|删除父级时,parent_id
字段将设置为所有引用行的默认值。|