Re: Foreign Key Constraints - Mailing list pgsql-general

From Jan Wieck
Subject Re: Foreign Key Constraints
Date
Msg-id 3D21AD02.370959E7@Yahoo.com
Whole thread Raw
In response to Foreign Key Constraints  ("joemono" <montero7@msu.edu>)
List pgsql-general
joemono wrote:
>
> Actually, I think I figured it out.  I had altered the foreign key within
> config to it's current condition, but config_values still existed.  I guess
> there was some data stored somewhere that kept assuming (for config_values)
> that config tag was using just ONE column as its foreign key? Or maybe I
> have no idea what I'm talking about.  That's probably it. :)
>
> When I deleted, and then recreated config_values, and then also config, it
> worked.
>
> Anyone have any explanations?

Well,

you've setup a 2 column foreign key exactly as it should be to ensure
that the config table can only hold possible value combinations that
exist in config_values. What happened was that you cannot change
config_values as long as rows in config actually reference them.

If you specify ON UPDATE CASCADE, then you can change config_values and
referencing rows in config will automatically be updated as well. Would
that make sense to you?


Jan

>
> joemono
>
> "joemono" <montero7@msu.edu> wrote in message
> news:afhubr$2k5b$1@msunews.cl.msu.edu...
> > Hi,
> > I'm trying to understand foreign key constraints more, but having a heck
> of
> > a time doing so.  I've been looking through Google groups to try to find
> > answers to the problems I'm having, but I haven't come across any as of
> yet.
> >
> > Here is the situation:
> >
> > I have a table of configurations.  The config table has config_tag,
> > config_value columns.  I also have a table of config_values, ones that are
> > valid for the config table.  The config_values table has all the possible
> > configurations (only about 40 or so) that can be put into the config
> table.
> >
> > Currently, the config_values table has as its primary key (tag, value),
> and
> > the config table has as a foreign key (config_tag, config_value) which
> > references config_values (tag, value).  I've also messed around with match
> > full, but I'm not sure I understand it completely, and it hasn't solved
> the
> > problem I'm having yet.
> >
> > I'm adding some new options, and so I added rows to the config_values
> table,
> > with completely new tags, but with values that other tags also use. (I'm
> > expanding existing options to cover other areas of the project).  Now that
> > the rows are in the config_values table, I've decided to change them
> around,
> > and use different values, so I want to delete them. However, I keep
> getting:
> >
> > "fk_config referential integrity violation - key in config_values still
> > referenced from config"
> >
> > Like I said, I've been trying the match full option, because it only makes
> > sense to match the config_tag-config_value combination, since many of the
> > values have the same...value.  Right?
> >
> > Anyway, I hope this makes sense.  Any help is greatly appreciated!
> >
> > joemono
> >
> >
> >
> >
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== JanWieck@Yahoo.com #



pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: namespaces and schemas
Next
From: Tom Lane
Date:
Subject: Re: Update question and SQL question