Re: BEFORE ... Statement-level trigger

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Jitendra Loyal <jitendra(dot)loyal(at)gmail(dot)com>
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: BEFORE ... Statement-level trigger
Date: 2019-02-18 16:31:51
Message-ID: 56fffd10-bfa0-53f6-10b8-530eb290521c@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 2/18/19 8:20 AM, Jitendra Loyal wrote:
> Thanks Adrian
>
> I am trying to understand as to how a BEFORE statement-level trigger can
> be used. Since it is a trigger, one needs to know which rows are being
> affected.

But you can't:

https://www.postgresql.org/docs/10/plpgsql-trigger.html

"NEW

Data type RECORD; variable holding the new database row for
INSERT/UPDATE operations in row-level triggers. This variable is
unassigned in statement-level triggers and for DELETE operations.
OLD

Data type RECORD; variable holding the old database row for
UPDATE/DELETE operations in row-level triggers. This variable is
unassigned in statement-level triggers and for INSERT operations.
"

>
> Regards,
> Jiten
>
> On Mon 18 Feb, 2019, 9:42 PM Adrian Klaver, <adrian(dot)klaver(at)aklaver(dot)com
> <mailto:adrian(dot)klaver(at)aklaver(dot)com>> wrote:
>
> On 2/18/19 4:06 AM, Jitendra Loyal wrote:
> > The behaviour is not clear for BEFORE Statement-level Trigger.
> This is
> > because transition tables cannot be used. So how does one get
> access to
> > the rows being affected? It is not documented either.
>
> If you need the row values then use a FOR ROW trigger.
>
> >
> > Thanks
> > Jiten
>
>
> --
> Adrian Klaver
> adrian(dot)klaver(at)aklaver(dot)com <mailto:adrian(dot)klaver(at)aklaver(dot)com>
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jitendra Loyal 2019-02-18 16:38:00 Re: Statement-level trigger results in recursion
Previous Message Adrian Klaver 2019-02-18 16:29:01 Re: Statement-level trigger results in recursion