Re: Foreign Key with an "OR" condition (and two concatenated columns)?

From: David Johnston <polobo(at)yahoo(dot)com>
To: Phoenix Kiula <phoenix(dot)kiula(at)gmail(dot)com>
Cc: PG-General Mailing List <pgsql-general(at)postgresql(dot)org>
Subject: Re: Foreign Key with an "OR" condition (and two concatenated columns)?
Date: 2012-01-08 16:58:49
Message-ID: 22A8FB55-FD19-41A4-934B-183FF688522B@yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Jan 8, 2012, at 9:33, Phoenix Kiula <phoenix(dot)kiula(at)gmail(dot)com> wrote:

> Hi. Hope I'm articulating the question correctly.
>
> I currently have a foreign key like this:
>
> "fk_table2" FOREIGN KEY (id) REFERENCES table1(id) ON DELETE CASCADE;
>
> Given the peculiar needs of this db, it seems that in some cases we
> will need to track the "id" of table2 against a concatenation of two
> columns in table2. So in pseudocode, it would look something like
> this.
>
> "fk_table2" FOREIGN KEY (id) REFERENCES table1(id OR
> id||'.'||column2) ON DELETE CASCADE;
>
> Do I need a separate constraint for this?
>
> Many thanks for any pointers!
>
>

Assuming you actually tried your syntax and received an error...

You cannot have two mutually exclusive constraints since one would always fail. You need to modify you schema to conform to the definition of a FOREGIN KEY or maintain integrity via a trigger.

Not enough details to comment on whether what you think you need is indeed a good design choice.

Database needs are nice in that they can be changed without much argument from the database. Now, if other developers exhibit these needs then your work becomes more difficult.

David J.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Stefan Keller 2012-01-08 17:08:09 Re: Binary Large Objects (LOB/BLOB) in Hibernate and JDBC: Unresolved issues
Previous Message Phoenix Kiula 2012-01-08 14:33:43 Foreign Key with an "OR" condition (and two concatenated columns)?