Postgresql 如何确定触发器是否通过级联调用?
如果这是级联操作,我如何告诉触发器继续执行?它有关键字吗Postgresql 如何确定触发器是否通过级联调用?,postgresql,plpgsql,cascading-deletes,Postgresql,Plpgsql,Cascading Deletes,如果这是级联操作,我如何告诉触发器继续执行?它有关键字吗 IF condition THEN IF TG_OP = 'DELETE' AND operation_is_a_result_of_cascade_delete THEN RETURN OLD; ELSE -- my constraints go here END IF; END IF; 我想施加某些条件,但前提是DELETE不是由外键约束的CASCADING关键字引起的。我不确定是否理解您的问题,但您可以
IF condition THEN
IF TG_OP = 'DELETE' AND operation_is_a_result_of_cascade_delete THEN
RETURN OLD;
ELSE
-- my constraints go here
END IF;
END IF;
我想施加某些条件,但前提是
DELETE
不是由外键约束的CASCADING
关键字引起的。我不确定是否理解您的问题,但您可以使用pg\u trigger\u depth()
来确定您的触发器是否是通过另一个触发器调用的
如果结果为1,则触发器被顶级语句调用。我将检查
pg\u trigger\u depth()
,谢谢。但我的问题中有什么不清楚?我想把它说得更清楚一些。关于你的问题,我唯一清楚的部分是“重新措辞”。我不知道什么是“继续交易”。我想这是一个恰当的技术术语问题。我会看看我能做些什么。这很有效,我忘记接受答案了,对不起!我将它设置为触发器触发的条件-当(pg_trigger_depth()<1)
时,因此级联删除甚至不会触发函数。非常感谢。