Re: insert rule doesn't see id field

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Ron Peterson <rpeterso(at)mtholyoke(dot)edu>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: insert rule doesn't see id field
Date: 2003-01-07 16:01:08
Message-ID: 13558.1041955268@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches pgsql-sql

Ron Peterson <rpeterso(at)mtholyoke(dot)edu> writes:
> CREATE RULE person_insert AS
> ON INSERT TO person
> DO
> INSERT INTO person_log ( name_last, name_first, mod_type, person_id )
> VALUES ( new.name_last, new.name_first, 'I', new.id );
> [where id is a serial column]

> My insert rule creates a record in person_log just fine. It inserts
> values for all of the fields except person_id. Why doesn't new.id
> contain a value?

This is a bug in 7.2.*. It's fixed in 7.3. However, your rule will
still not work the way you would like, because rules are macros: the
default expression for id will get evaluated once in the rule and once
in your original query, leading to two different sequence numbers
getting inserted.

The only way to make this example work is to issue the log insertion
from a trigger, not a rule.

> (Problem 2)

> I thought that the idea behind noup was to protect single columns from
> update. However, when I apply the noup trigger as above, I can't
> update /any/ column. Is this the intended behaviour?

Idly looking at the source code for contrib/noupdate/noup.c, I don't
believe that it has ever worked as advertised: it seems to reject any
non-null value for the target column, independently of whether the
value is the same as before (which is what I'd have thought it should
do).

Is anyone interested in fixing it? Or should we just remove it?
If it's been there since 6.4 and you're the first person to try to use
it, as seems to be the case, then I'd have to say that it's a waste of
space in the distribution.

regards, tom lane

In response to

Responses

Browse pgsql-patches by date

  From Date Subject
Next Message Jon Jensen 2003-01-07 16:04:45 Re: Refuse SSL patch
Previous Message Bruce Momjian 2003-01-07 15:47:42 Re: Refuse SSL patch

Browse pgsql-sql by date

  From Date Subject
Next Message Peter Galbavy 2003-01-07 16:04:28 Re: weighting (the results of) a query ?
Previous Message Achilleus Mantzios 2003-01-07 15:39:57 7.3.1 index use / performance