Re: types of constraint deferment

From: Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com>
To: Ron Johnson <ron(dot)l(dot)johnson(at)cox(dot)net>
Cc: PgSQL General ML <pgsql-general(at)postgresql(dot)org>
Subject: Re: types of constraint deferment
Date: 2003-08-12 18:43:59
Message-ID: 20030812114012.G17277-100000@megazone.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


On 12 Aug 2003, Ron Johnson wrote:

> On Tue, 2003-08-12 at 00:38, Stephan Szabo wrote:
> > On 11 Aug 2003, Ron Johnson wrote:
> >
> > > v7.3.3
> > > http://www.postgresql.org/docs/7.3/static/sql-createtable.html
> > >
> > > Is "INITIALLY DEFERRED" a modifier of "NOT DEFERRABLE"? If so,
> > > what does it do, since they seem contradictory.
> >
> > It's not allowed. An INITIALLY DEFERRED constraint must not
> > be defined as NOT DEFERRABLE, although an INITIALLY DEFERRED
> > constraint that doesn't specify either is considered DEFERRABLE.
> > The docs refered to are weak on this, care to try a rewrite of
> > those parts? :)
>
> Sure, after I know what the rules are!!!!!

Basically, you can specify one of the following states on the constraint
(unless I'm missing something)

Neither a check time nor a deferrability, in which case you get
NOT DEFERRABLE INITIALLY IMMEDIATE
No check time and NOT DEFERRABLE, in which case you get
NOT DEFERRABLE INITIALLY IMMEDIATE
No check time and DEFERRABLE, in which case you get
DEFERRABLE INITIALLY IMMEDIATE
A check time of INITIALLY IMMEDIATE and no deferrability, in which case
you get NOT DEFERRABLE INITIALLY IMMEDIATE
A check time of INITIALLY DEFERRED and no deferrability, in which case
you get DEFERRABLE INITIALLY DEFERRED
A check time of INITIALLY IMMEDIATE and NOT DEFERRABLE, in which case
you get NOT DEFERRABLE INITIALLY IMMEDIATE
A check time of INITIALLY IMMEDIATE and DEFERRABLE, in which case
you get DEFERRABLE INITIALLY IMMEDIATE
A check time of INITIALLY DEFERRED and DEFERRABLE, in which case
you get DEFERRABLE INITIALLY DEFERRED
A check time of INITIALLY DEFERRED and NOT DEFERRABLE is an error
condition.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Dennis Gearon 2003-08-12 18:53:42 Re: PL/C functions
Previous Message Robert Treat 2003-08-12 18:11:20 Re: remove $ from money field