From: | Jan Wieck <janwieck(at)Yahoo(dot)com> |
---|---|
To: | Josh Berkus <josh(at)agliodbs(dot)com> |
Cc: | sqllist <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: Is this a bug, or is it just me? |
Date: | 2001-02-08 10:59:12 |
Message-ID: | 200102081059.FAA02777@jupiter.greatbridge.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Josh Berkus wrote:
> Tom et al.
>
> Discovered this quirk in foriegn keys:
>
> In the preliminary version of a database, I added foriegn
> key constraints to a number of tables, linking them to a
> column in a shared reference table (status.status) that was
> only one-half of a composite primary key (and thus the
> values were not unique). When I tried to delete a row
> containing a "2" in the status column from the status
> relation, I received a Foreign Key violation error event
> though there were other "2"'s in the table still present.
>
> So ... is this a bug in forign key implementation, or just
> my fault for keying off a non-unique value?
>
> And, if the latter, is there a way I can construct a foreign
> key constraint that keys onto a view or query?
The referenced columns of a foreign key constraint shall have
a unique constraint. That's how it is in the SQL specs. So
it is a bug that the system let's you specify the constraint
at all. I think Stephan fixed it for 7.1.
OTOH Postgres doesn't (and shouldn't) enforce it after,
because if it would, you couldn't drop/create a corrupted
index.
And no, you can't actually reference to a view or anything
else than a table. That is, because the system wouldn't know
how to check for the DELETE/UPDATE cases on the base tables
building the view if the removal of a key would violate
existing references.
For such custom setups, we have procedural languages and
triggers.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck(at)Yahoo(dot)com #
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com
From | Date | Subject | |
---|---|---|---|
Next Message | Jan Wieck | 2001-02-08 11:37:22 | Re: [SQL] PL/PGSQL function with parameters |
Previous Message | Jan Wieck | 2001-02-08 09:38:44 | Re: Hrm...why is this wrong? |