pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Alvaro Herrera <alvherre@commandprompt.com>
Cc: Achilleus Mantzios <achill@matrix.gatewaynet.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: After Trigger assignment to NEW
Date: Fri, 24 Feb 2006 12:37:51 -0500
Message-ID: <4347.1140802671@sss.pgh.pa.us> (raw)
In-Reply-To: <20060224171652.GD7696@surnet.cl>
References: <Pine.LNX.4.44.0602241831280.19738-100000@matrix.gatewaynet.com>
	<3649.1140797162@sss.pgh.pa.us>
	<20060224171652.GD7696@surnet.cl>

Alvaro Herrera <alvherre@commandprompt.com> writes:
> Tom Lane wrote:
>> Achilleus Mantzios <achill@matrix.gatewaynet.com> writes:
>>> Is there a reason that the NEW values should remain unchanged in AFTER 
>>> row triggers?
>> 
>> By definition, an AFTER trigger is too late to change what was stored.
>> Use a BEFORE trigger.

> But a BEFORE trigger would alter the stored tuple, which is not what
> Achilleus wants AFAIU.

Oh, I misunderstood what he wanted ... and now that I do understand,
I think it's a really terrible idea :-(.  A large part of the point
of using an AFTER trigger is to be certain you know exactly what got
stored.  (BEFORE triggers can never know this with certainty because
there might be another BEFORE trigger that runs after them and edits the
tuple some more.)  If one AFTER trigger could falsify the data seen by
the next, then that guarantee crumbles.  For instance, a minor
programming error in a user-written trigger could break foreign-key
checking.  No thanks.

> I think the desired effect can be had by having DBMirror check the
> source relation of the inserted tuple (There is a hidden attributa
> called tableoid IIRC that can be used for that, I think).

I agree --- the correct solution is to change the DBMirror triggers to
incorporate the desired filtering logic.

			regards, tom lane



view thread (9+ messages)  latest in thread

Message-ID: <4347.1140802671@sss.pgh.pa.us>
Permalink:  ../4347.1140802671@sss.pgh.pa.us/
Also on:    postgresql.org/message-id/4347.1140802671@sss.pgh.pa.us

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: tgl@sss.pgh.pa.us, alvherre@commandprompt.com, achill@matrix.gatewaynet.com
  Subject: Re: After Trigger assignment to NEW
  In-Reply-To: <4347.1140802671@sss.pgh.pa.us>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox