From: Stephan Szabo <sszabo@megazone.bigpanda.com>
To: Erik Thiele <erik@thiele-hydraulik.de>
Cc: achill@matrix.gatewaynet.com
Cc: pgsql-sql@postgresql.org
Subject: Re: special integrity constraints
Date: Mon, 22 Mar 2004 08:34:54 -0800 (PST)
Message-ID: <20040322083110.X58785@megazone.bigpanda.com> (raw)
In-Reply-To: <20040322172544.0a9b34d4.erik@thiele-hydraulik.de>
References: <20040322102031.6a6f0b77.erik@thiele-hydraulik.de>
<Pine.LNX.4.44.0403221212500.31407-100000@matrix.gatewaynet.com>
<20040322112659.4553df76.erik@thiele-hydraulik.de>
<20040322061854.W56073@megazone.bigpanda.com>
<20040322172544.0a9b34d4.erik@thiele-hydraulik.de>
On Mon, 22 Mar 2004, Erik Thiele wrote:
> On Mon, 22 Mar 2004 06:21:28 -0800 (PST)
> Stephan Szabo <sszabo@megazone.bigpanda.com> wrote:
>
> >
> > On Mon, 22 Mar 2004, Erik Thiele wrote:
> >
> > However, foreign keys are implemented using "constraint triggers". They're
> > really not documented much (because they're a not really separately
> > supported implementation detail), but you can theoretically make
> > triggers that are deferred to immediately before commit time.
>
> could you paste some code?
>
>
> create table a (x integer);
>
> create or replace function alwaysfail() returns opaque as '
> begin
> raise exception ''no no i dont want to'';
> end;
> ' language 'plpgsql';
>
> MAGIC COMMAND INSERT HERE, INSTALL CALL OF alwaysfail() ON
> MODIFICATION OF TABLE a AT COMMIT TIME;
create constraint trigger a_foo1 after insert or update or delete on a
initially deferred for each row execute procedure alwaysfail();
Like I said, it's an implementation detail, so it's not 100% guaranteed to
exist forever, but it's almost certain to last until we have deferrable
non-fk constraints. It does also obey set constraints so, set constraints
a_foo1 immediate does the checks immediately just as if it were a deferred
constraint.
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: sszabo@megazone.bigpanda.com, erik@thiele-hydraulik.de, achill@matrix.gatewaynet.com
Subject: Re: special integrity constraints
In-Reply-To: <20040322083110.X58785@megazone.bigpanda.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