pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Jasen Betts <jasen@xnet.co.nz>
To: pgsql-sql@postgresql.org
Subject: Re: Order of evaluation in triggers for checks on inherited table partitions
Date: 30 May 2011 09:21:19 GMT
Message-ID: <irvnif$o8n$4@reversiblemaps.ath.cx> (raw)
References: <BANLkTi=ZH6_MCYE=F=pevpK1S72jCDGLVA@mail.gmail.com>

On 2011-05-27, Kevin Crain <kevin.crain1@gmail.com> wrote:
> I am trying to create a trigger on updates to a table that is
> partitioned.  The child tables are partitioned by month and include
> checks on a timestamp field. 

> However when I try to update an existing record with a
> timestamp that would place it in a child table different from the
> child table it is in I get an error due to the check on the child
> table it is currently in.  My best guess as to what is happening is
> that the trigger is evaluating the check before it evaluates the
> trigger function and thus cannot tell that the update to the original
> table should never take place.  I have included an example below.  The
> error that results is "new row for relation "t_foo_2011_6" violates
> check constraint "t_foo_2011_6_f_timestamp_check""

the problem is the check is running before the trigger.
perhaps you can use a rule instead of a trigger?

-- 
⚂⚃ 100% natural




view thread (5+ messages)  latest in thread

Message-ID: <irvnif$o8n$4@reversiblemaps.ath.cx>
Permalink:  ../irvnif$o8n$4@reversiblemaps.ath.cx/
Also on:    postgresql.org/message-id/irvnif$o8n$4@reversiblemaps.ath.cx

 · 

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: jasen@xnet.co.nz
  Subject: Re: Order of evaluation in triggers for checks on inherited table partitions
  In-Reply-To: <irvnif$o8n$4@reversiblemaps.ath.cx>

* 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