From: | Dennis Gearon <gearond(at)cvc(dot)net> |
---|---|
To: | tom dyson <tom(at)torchbox(dot)com> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: conditional constraints |
Date: | 2003-04-11 15:19:55 |
Message-ID: | 3E96DD1B.4010706@cvc.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
you pretty much covered all the ways to do it, in the ways you didn't WANT to do it.
Unless you add another column or another intermediate table, NULL or a value at
the end of your data range are what you are stuck with, IMHO.
tom dyson wrote:
> (on behalf of my colleague, Neal Todd)
>
> This question is about whether it's possible to have conditionality on a
> constraint, or rather (presuming it's not possible), how it can be emulated
> perhaps with a trigger.
>
> The scenario is this (but is fairly general anyway)...
>
> Table "P" storing projects with a project id primary key.
> and
> Table "D" storing diary entries relating to projects with foreign key
> constraint referencing project ids in table "P".
>
> Fine so far, we have referential integrity on the project ids in table "D".
>
> However, we need to add diary entries that are for a generic "non-project"
> category. Without the constraint we could just have a null or dummy (e.g. 0)
> entry in D's project id foreign key. But with the constraint the referential
> integrity is broken.
>
> We don't want to put a dummy 0 record in the P table to satisfy the
> constraint because that means having to add conditionality in all queries on
> P where we want to exclude the dummy record (i.e. "WHERE project_id <> 0").
>
> Ideally, we also don't want to drop the constraint.
>
> Presumably it's not possible to have conditionality on a constraint? i.e. be
> able to say something like "enforce the referential integrity on the project
> id foreign key if it is not 0".
>
> I haven't seen anything in the postgresql docs to indicate it's possible.
>
> If that is the case, is there a way to emulate this fairly easily with a
> trigger?
>
> -----------------+
> tom dyson
> t: +44 (0)1608 811870
> m: +44 (0)7958 752657
> http://torchbox.com
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>
From | Date | Subject | |
---|---|---|---|
Next Message | Dennis Gearon | 2003-04-11 15:23:11 | Re: Batch replication ordering (was Re: [GENERAL] 32/64-bit |
Previous Message | Jan Wieck | 2003-04-11 14:54:10 | Re: help Request |