如何从postgresql表中删除没有级联的行

问题描述:

假设我的应用程序有两个不同的表,其中一个表引用另一个表。还有一个关于删除级联的定义?如何从postgresql表中删除没有级联的行

我不希望删除的删除级联约束,但是,有时我的地方我想删除忽略级联的语句,如:

delete_without_cascade from table1 where id = id1 

有没有办法做到这一点

+0

那么你是说当你从父母删除或想要知道如何首先轻松地删除子记录时,你想要孤儿子记录?我不确定你想要什么。 –

级联删除时会删除删除父母时删除的子记录。如果您不想这样做,那么您必须对由FK约束约束的列中的值进行一些操作,因为数据库架构不应允许记录具有孤立值。如果列允许使用null值,则在运行删除操作之前,先执行更新以将FK列值设置为null

如果级联不存在,执行delete语句时通常会出错,因为在其他表中会存在孤立的记录。

如果你不理解级联删除是如何工作的,它不会在反向工作,即。删除引用父表的记录不会导致父记录被删除。

+0

Actuallt我希望我的应用程序删除子节点,但是当我使用pgadmin进行某些修改时,我想查看有关子记录的错误。无论如何,据我了解,没有办法建立这样的查询。谢谢您的回答。 – kundante