Re: FOREIGN KEY Reference on multiple columns - Mailing list pgsql-sql

From Weiss, Jörg
Subject Re: FOREIGN KEY Reference on multiple columns
Date
Msg-id 4B4E89127868BD458A795430BCF4FD1328C51B1B@DVZSN-RA0325.bk.dvz-mv.net
Whole thread Raw
In response to Re: FOREIGN KEY Reference on multiple columns  (Luca Vernini <lucazeo@gmail.com>)
List pgsql-sql
That's what I wanted to know.
It's not only a constraint to a "certain value" or (better) "specific value", it should be a constraint to a
combinationof the values of 2 columns. 
 
"type" of table "user" must equal to "value" of table "parm" where "para" of table "parm"  must always be
"login_user".
Check or a function is not the same. A "foreign key" works on both sides. Table "user" and table "parm".
OK I can do checks at both tables ON UPDATE, INSERT or DELETE. This may work.  

Regards

Jörg

> -----Ursprüngliche Nachricht-----
> Von: Luca Vernini [mailto:lucazeo@gmail.com]
> Gesendet: Dienstag, 23. September 2014 15:18
> An: Weiss, Jörg
> Cc: pgsql-sql@postgresql.org
> Betreff: Re: [SQL] FOREIGN KEY Reference on multiple columns
> 
> I see.
> You cannot do a constraint with a "certain value", if I understood
> right. This is not even possible in any know rdbms, because a
> constraint must reference something stored on tables. Persisted on db.
> You can only check values while inserting. I suggest useing a function.
> 
> Regards,
> 
> Luca.
> 
> 2014-09-23 15:10 GMT+02:00 Weiss, Jörg <J.Weiss@dvz-mv.de>:
> > I mean b must equal to c1  in the "other_table" where c2 has a certain value
> (for example c2 ).
> >
> > For my first example:
> > CREATE TABLE parm
> > (
> >   complex varchar(20) NOT NULL,
> >   para varchar(50) NOT NULL,
> >   sort int4 NOT NULL DEFAULT 10,
> >   value varchar(50) NULL,
> >  CONSTRAINT parm_pkey PRIMARY KEY (complex, para, sort)
> > )
> >
> > Table user
> > CREATE TABLE user
> > (
> >   name varchar(20) NOT NULL,
> >   type integer NULL
> > )
> > In this case "type" of table user must equal to "value" of table "parm" and
> "para" must be "login_user" (for example)
> >
> > Regards
> >
> > Jörg
> >
> >> -----Ursprüngliche Nachricht-----
> >> Von: Luca Vernini [mailto:lucazeo@gmail.com]
> >> Gesendet: Dienstag, 23. September 2014 14:37
> >> An: Weiss, Jörg
> >> Cc: pgsql-sql@postgresql.org
> >> Betreff: Re: [SQL] FOREIGN KEY Reference on multiple columns
> >>
> >> Sorry, I don't get your problem.
> >> In first example there was a where, in second case:
> >> FOREIGN KEY (b) REFERENCES other_table (c1, c2='c2Value')
> >> You mean b must be equal to what?
> >> Try to include real table script.
> >> Probably you can use a check.
> >>
> >> Regards,
> >>
> >> Luca.
> >>
> >> 2014-09-23 13:38 GMT+02:00 Weiss, Jörg <J.Weiss@dvz-mv.de>:
> >> >> -----Ursprüngliche Nachricht-----
> >> >> Von: Luca Vernini [mailto:lucazeo@gmail.com]
> >> >> Gesendet: Dienstag, 23. September 2014 11:59
> >> >> An: Weiss, Jörg
> >> >> Cc: pgsql-sql@postgresql.org
> >> >> Betreff: Re: [SQL] FOREIGN KEY Reference on multiple columns
> >> >>
> >> >> 2014-09-23 11:54 GMT+02:00 Weiss, Jörg <J.Weiss@dvz-mv.de>:
> >> >> > Hi!
> >> >> Hi.
> >> >>
> >> >> > Is it possible to create a “FOREIGN KEY CONSTRAINT” with references
> to
> >> >> > multiple columns of the reference table?
> >> >>
> >> >> Yes, it is.
> >> >>
> >> >> see here:
> >> >> http://www.postgresql.org/docs/9.3/static/ddl-constraints.html
> >> >> Section 5.3.5 there are some examples. One of them has multiple
> >> >> columns, just like your case.
> >> >>
> >> >> > Regards …
> >> >>
> >> >> Regards.
> >> >
> >> > Thank you!
> >> >
> >> > Do you mean this example?
> >> > CREATE TABLE t1 (
> >> >   a integer PRIMARY KEY,
> >> >   b integer,
> >> >   c integer,
> >> >   FOREIGN KEY (b, c) REFERENCES other_table (c1, c2)
> >> > );
> >> > This is not, what I want.
> >> >
> >> > In my case it should be something like this:
> >> > CREATE TABLE t1 (
> >> >   a integer PRIMARY KEY,
> >> >   b integer,
> >> >   c integer,
> >> >   FOREIGN KEY (b) REFERENCES other_table (c1, c2='c2Value')
> >> > );
> >> > This example does not work. But I think you can see, what I mean.
> >> >
> >> >
> >> >
> >> > --
> >> > Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> >> > To make changes to your subscription:
> >> > http://www.postgresql.org/mailpref/pgsql-sql
> >
> > --
> > Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> > To make changes to your subscription:
> > http://www.postgresql.org/mailpref/pgsql-sql

pgsql-sql by date:

Previous
From: Luca Vernini
Date:
Subject: Re: FOREIGN KEY Reference on multiple columns
Next
From: Tim Landscheidt
Date:
Subject: Re: FOREIGN KEY Reference on multiple columns