如何确定是否通过 CASCADE 调用了触发器?
How to determine if a trigger was called via CASCADE?
如何让我的触发器仅在级联操作时继续执行?有关键字吗?
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_trigger_depth()
来确定你的触发器是否是通过另一个触发器调用的。
如果结果为 1,则您的触发器是由顶级语句调用的。
如何让我的触发器仅在级联操作时继续执行?有关键字吗?
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_trigger_depth()
来确定你的触发器是否是通过另一个触发器调用的。
如果结果为 1,则您的触发器是由顶级语句调用的。