Обсуждение: Foreign key
Hello,
When i add table with foreign key in my database, this error return : « number of referencing and referenced colums for foreign key disagree».
How resolve this problem ?
Thanks
alain SAKALALA
Mailto:asakalal@bouyguestelecom.fr
On Fri, Mar 25, 2005 at 04:31:16PM +0100, ASAKALAL@bouyguestelecom.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 primarykey ); CREATE TABLE bar ( fk integer NOT NULL REFERENCES foo -- 1-column foreign key ); ERROR: number ofreferencing 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/
On Fri, Mar 25, 2005 at 16:31:16 +0100, ASAKALAL@bouyguestelecom.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>. > > How resolve this problem ? Besides what Mike said, one other thing to remember is that if you don't specify columns in the referenced table, the primary key of that table is used, NOT columns with names matching those of the referencing table. In cases like this it have helped if you had copied and pasted an example displaying the problem in addition to the error message.