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;解释分析冗长。。。;回滚代码>