Sql 模拟删除外键检查

Sql 模拟删除外键检查,sql,postgresql,Sql,Postgresql,有没有办法模拟运行删除查询时发生的外键检查 例如,如果尝试删除其他表中引用的对象,则在运行删除查询时会出现错误。但是,有没有一种方法可以查询特定表中特定行的所有“从属项”呢?但是,如果要检查是否有对特定行的引用,可以使用与所有被引用表关联的查询: select m.pk , case when max(t1.fk) is not null then 1 else 0 end "refrenced in t1" , case when max(t

有没有办法模拟运行删除查询时发生的外键检查


例如,如果尝试删除其他表中引用的对象,则在运行删除查询时会出现错误。但是,有没有一种方法可以查询特定表中特定行的所有“从属项”呢?

但是,如果要检查是否有对特定行的引用,可以使用与所有被引用表关联的查询:

select m.pk 
       , case when max(t1.fk) is not null then 1  else 0 end "refrenced in t1"
       , case when max(t2.fk) is not null then 1  else 0 end "refrenced in t2"
from MainTable m
left join childtable1 t1
 on m.pk = t1.fk
left join childtable1 t2
 on m.pk = t2.fk
where m.pk = 10;
group by m.pk
如果要获取主表和所有子表的行:

select * 
from MainTable m
left join childtable1 t1
 on m.pk = t1.fk
left join childtable1 t2
 on m.pk = t2.fk
where m.pk = 10;

是的,通过检查每个DBMS中不同的系统表,我知道如何找到一个表的所有FK,但我想知道是否有办法获取引用该行的所有其他表的所有行。您可以在sql中查询,您可以尝试:
BEGIN;解释分析冗长。。。;回滚