Thread: Can a nested function determine it is being called within a trigger?

Can a nested function determine it is being called within a trigger?

From
Basil Bourque
Date:
When a trigger calls a function, that function can determine if it is being called from within a trigger by testing for
avalue in the special variable "TG_OP". 

But what if a trigger calls a function that calls a 2nd function via the "PERFORM" command? Can that 2nd function tell
ifit is being run in a trigger? 

Trigger --> Function_A --> Function_B

--Basil Bourque



Basil Bourque <basil.list@me.com> writes:
> When a trigger calls a function, that function can determine if it is being called from within a trigger by testing
fora value in the special variable "TG_OP". 

Uh, no, not really.  TG_OP is a local variable in the trigger function;
it's not visible from elsewhere.

> But what if a trigger calls a function that calls a 2nd function via the "PERFORM" command? Can that 2nd function
tellif it is being run in a trigger? 

No.  Doesn't really matter whether you use PERFORM or not.

            regards, tom lane

Re: Can a nested function determine it is being called within a trigger?

From
Rob Sargent
Date:

On 04/15/2011 05:36 PM, Tom Lane wrote:
> Basil Bourque<basil.list@me.com>  writes:
>> When a trigger calls a function, that function can determine if it is being called from within a trigger by testing
fora value in the special variable "TG_OP". 
>
> Uh, no, not really.  TG_OP is a local variable in the trigger function;
> it's not visible from elsewhere.
>
>> But what if a trigger calls a function that calls a 2nd function via the "PERFORM" command? Can that 2nd function
tellif it is being run in a trigger? 
>
> No.  Doesn't really matter whether you use PERFORM or not.
>
>             regards, tom lane
>
One could pass a boolean from function A to B, I suppose.