Как определить, был ли вызван триггер через CASCADE? - PullRequest
0 голосов
/ 24 сентября 2018

Как я могу сказать своему триггеру продолжить выполнение, только если это была каскадная операция?Есть ли для него ключевое слово?

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 ограничения внешнего ключа.

1 Ответ

0 голосов
/ 25 сентября 2018

Я не уверен, что понял ваш вопрос, но вы можете использовать pg_trigger_depth(), чтобы узнать, был ли ваш триггер вызван через другой триггер.

Если результат равен 1, ваш триггер был вызваноператор верхнего уровня.

...