From: | Achilleus Mantzios <achill(at)matrix(dot)gatewaynet(dot)com> |
---|---|
To: | Erik Thiele <erik(at)thiele-hydraulik(dot)de> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: special integrity constraints |
Date: | 2004-03-22 11:40:11 |
Message-ID: | Pine.LNX.4.44.0403221322020.31407-100000@matrix.gatewaynet.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-docs pgsql-sql |
O kyrios Erik Thiele egrapse stis Mar 22, 2004 :
> On Mon, 22 Mar 2004 12:13:29 +0200 (EET)
> Achilleus Mantzios <achill(at)matrix(dot)gatewaynet(dot)com> wrote:
>
> > O kyrios Erik Thiele egrapse stis Mar 22, 2004 :
> >
> > Did you check out the DEFERRABLE option on the constraint?
> >
>
> DEFERRABLE
> NOT DEFERRABLE
>
> This controls whether the constraint can be deferred. A constraint that
> is not deferrable will be checked immediately after every command.
> Checking of constraints that are deferrable may be postponed until the
> end of the transaction (using the SET CONSTRAINTS command). NOT
> DEFERRABLE is the default.
>
> !!!! Only foreign key constraints currently accept
> this clause. All other constraint types are not deferrable. !!!!
>
Ooops . Then i guess you have to
convert your problem to use FK constraints.
Add 2 additional 1 row tables "abnum" and "even" and write 2 triggers
(on a,b) that keep up to date the value of the single row of abnum.
(thatis num(a)+num(b) % 2).
Then INSERT INTO even(num) VALUES(0);
Then make 1<-->1 relationship between abnum,even using
DEFERRABLE FK constraints.
At the end of each xaction the num(a)+num(b) % 2 must equal to 0
(i.e. an even number).
Whats your results?
> my constraint is not a foreign key constraint....
>
> cya!
> erik
>
> > > hi,
> > >
> > > i have two tables
> > >
> > > create table a (x integer);
> > > create table b (y real);
> > >
> > > i have the special constraint that the sum of the number of rows in
> > > table a plus the number of rows in table b must be even.
> > >
> > > so there is a posibility of adding one element to a and one element
> > > to b, and again the constraint is met.
> > >
> > > but this of course does not work, since between adding the element
> > > to a and adding the element to b, the constraint is not met.
> > >
> > > so i cannot use a trigger.
> > >
> > > what i need is the execution of a check procedure at commit time. is
> > > that somehow possible?
> > >
> > > my database has much more tables than just a and b, and most time
> > > the other tables are modified and not a or b, so it would be nice to
> > > execute the constraint checking procedure only if a or b was
> > > modified.
> > >
> > > yes :) this question i asked in my former mail too, but I think it
> > > looked like there was a workaround and my problem was wrong. so i
> > > created this new kind of problem here to make things clearer.
> > >
> > >
> > > cu
> > > Erik
> > >
> > >
> > >
> >
> > --
> > -Achilleus
> >
>
>
>
--
-Achilleus
From | Date | Subject | |
---|---|---|---|
Next Message | Erik Thiele | 2004-03-22 13:10:42 | Re: special integrity constraints |
Previous Message | Bruno Wolff III | 2004-03-22 11:26:04 | Re: special integrity constraints |
From | Date | Subject | |
---|---|---|---|
Next Message | Bruno Wolff III | 2004-03-22 12:50:54 | Re: inverse of "day of year" |
Previous Message | Martin Marques | 2004-03-22 11:32:32 | Re: inverse of "day of year" |