如何检查删除是否由PostgreSQL触发器中的CASCADE引起

时间:2014-06-18 12:29:49

标签: postgresql plpgsql cascading-deletes postgresql-9.3

在PL / pgSQL触发器函数中,有没有办法知道删除是通过级联删除操作调用的?
我在触发器函数中有一些检查,看看是否允许删除,如果删除是从主表级联的,我不想执行。

1 个答案:

答案 0 :(得分:4)

我无法想出一种内置的检查方法 您可以而不是检查主表中是否存在主行...

IF EXISTS (
   SELECT 1
   FROM   master_table m
   WHERE  m.master_id = OLD.master_id) THEN

   -- run checks

END IF;

如果它是级联删除,则主行应该已经消失。