sql - 如何在没有级联的情况下从postgresql表中删除行

标签 sql postgresql

假设我的应用程序有两个不同的表,其中一个引用另一个。还定义了一个删除级联?

我不想在删除级联约束时删除,但有时我想从我的本地删除忽略级联语句的内容,例如:

delete_without_cascade from table1 where id = id1

有什么办法吗

最佳答案

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

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

如果您不了解 Cascade on delete 的工作原理,它不会反向工作,即。删除引用父表的记录不会导致父记录被删除。

关于sql - 如何在没有级联的情况下从postgresql表中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45740857/

相关文章:

mysql - 从两个不同的表中查询同一列

sql - 尝试使用 SQL 查询获取公共(public)交通的直接、间接、相交路线

ruby-on-rails - 无法连接 postgres 服务器

python - 如何根据 postgresql 中的列值定义唯一约束?

c# - InvalidCastException : Unable to cast object of type 'System.DBNull' to type 'System.Nullable` 1[System. Int32]'

postgresql - Postgres 函数返回参数或零值

json - PostgreSQL-JSON

sql - 试图构造一个SQL查询麻烦

sql - 仅检索一组数据的最新项

sql - 在 SQL 语句中构建动态 where 条件