Re: Foreign key

From: Michael Fuhr <mike(at)fuhr(dot)org>
To: ASAKALAL(at)bouyguestelecom(dot)fr
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Foreign key
Date: 2005-03-27 07:47:20
Message-ID: 20050327074720.GB46207@winnie.fuhr.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Fri, Mar 25, 2005 at 04:31:16PM +0100, ASAKALAL(at)bouyguestelecom(dot)fr wrote:
>
> When i add table with foreign key in my database, this error return : <
> number of referencing and referenced colums for foreign key disagree>.

Apparently the referencing key (the foreign key specification) has
a different number of columns than the referenced key (the primary
key or other unique key in the referenced table). Here's an example
that illustrates the problem:

CREATE TABLE foo (
pk1 integer NOT NULL,
pk2 integer NOT NULL,
PRIMARY KEY (pk1, pk2) -- 2-column primary key
);

CREATE TABLE bar (
fk integer NOT NULL REFERENCES foo -- 1-column foreign key
);

ERROR: number of referencing and referenced columns for foreign key disagree

In the above example we need a 2-column foreign key:

CREATE TABLE bar (
fk1 integer NOT NULL,
fk2 integer NOT NULL,
FOREIGN KEY (fk1, fk2) REFERENCES foo
);

Here's another example that references a 1-column unique key that
isn't a primary key:

CREATE TABLE foo (
pk1 integer NOT NULL,
pk2 integer NOT NULL,
x integer NOT NULL,
PRIMARY KEY (pk1, pk2),
UNIQUE (x)
);

CREATE TABLE bar (
fk integer NOT NULL REFERENCES foo (x)
);

If these examples don't help, then please post the table definitions
you're working with and explain what you'd like to do.

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2005-03-27 07:57:10 Re: How to make update statement to work
Previous Message Michael Fuhr 2005-03-27 07:26:07 Re: Auto Numbering