pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Adrian Klaver <adrian.klaver@gmail.com>
To: pgsql-sql@postgresql.org
Cc: Ron Peterson <rpeterso@mtholyoke.edu>
Subject: Re: on insert rule with default value
Date: Wed, 22 Feb 2012 07:32:10 -0800
Message-ID: <201202220732.10518.adrian.klaver@gmail.com> (raw)
In-Reply-To: <20120222135239.GI29194@mtholyoke.edu>
References: <20120221205130.GG29194@mtholyoke.edu>
	<20120222135239.GI29194@mtholyoke.edu>

On Wednesday, February 22, 2012 5:52:39 am Ron Peterson wrote:
> 2012-02-21_15:51:30-0500 Ron Peterson <rpeterso@mtholyoke.edu>:
> > My rule below does not insert the the same uuid value into the test_log
> > table as is created in the test table when I insert a new value.  I know
> > I've worked through this before, but I'm not remembering why this is.
> > What's a right way to do this?
> 
> Obviously I can use a trigger function.  I'm mostly wondering if there
> are any tricks to accomplishing this with rules (I like the simple
> syntax).  I suspect the problem here is that 'new' on insert refers to
> the function used to calculate the new value, /not/ the new value that
> is actually inserted into the table.  There are probably reasons for
> that; but it would seem nicer to refer to the actual new table value
> rather than the expression used to calculate it.  My 2c.


The simplest explanation I could find is here:

http://www.postgresql.org/docs/9.0/interactive/querytree.html
"the target list...

For INSERT commands, the target list describes the new rows that should go into 
the result relation. It consists of the expressions in the VALUES clause or the 
ones from the SELECT clause in INSERT ... SELECT. The first step of the rewrite 
process adds target list entries for any columns that were not assigned to by 
the original command but have defaults. Any remaining columns (with neither a 
given value nor a default) will be filled in by the planner with a constant null 
expression.

"

If you want all the gory details read through section 37, in particular 37.3 :) 

The above is why I use triggers now. It is a lot easier to follow the logic in a 
trigger than in a rule.


> 
> -Ron-


-- 
Adrian Klaver
adrian.klaver@gmail.com



view thread (3+ messages)

Message-ID: <201202220732.10518.adrian.klaver@gmail.com>
Permalink:  ../201202220732.10518.adrian.klaver@gmail.com/
Also on:    postgresql.org/message-id/201202220732.10518.adrian.klaver@gmail.com

 · 

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: adrian.klaver@gmail.com, rpeterso@mtholyoke.edu
  Subject: Re: on insert rule with default value
  In-Reply-To: <201202220732.10518.adrian.klaver@gmail.com>

* 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