Discussion:
Foreign Key Question
(too old to reply)
Stephan Szabo
2004-02-13 00:31:13 UTC
Permalink
Inventory, Productnr, Productserial
(PK Inventory, Prouctnr)
Pruductnr, Produktdesc, Productversion
(PK Productnr; FK Productnr)
This Construct gives me an error during the creation in Postgresql
(saying there is no unique constraint matching given keys for referenced
table xxxx). The Primary Key in table 1 consists of two columns. In the
second table there is a foreign key refencing to the first table.
A unique constraint doesn't make sense on table one. Am I missing
something here?
What are the semantics you are looking for? Foreign keys only can refer
to unique things, because except for a few odd cases involving nulls and
match partial, it's intended that one particular row is being referenced.
If there are multiple rows in table1 with a particular productnr, how do
you want a reference to that to act (esp in the case of delete or update
to table 1).

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
joining column's datatypes do not match
Bruno Wolff III
2004-02-13 00:45:20 UTC
Permalink
On Mon, Feb 09, 2004 at 08:59:12 +0100,
Inventory, Productnr, Productserial
(PK Inventory, Prouctnr)
Pruductnr, Produktdesc, Productversion
(PK Productnr; FK Productnr)
This Construct gives me an error during the creation in Postgresql
(saying there is no unique constraint matching given keys for referenced
table xxxx). The Primary Key in table 1 consists of two columns. In the
second table there is a foreign key refencing to the first table.
A unique constraint doesn't make sense on table one. Am I missing
something here?
Having typos in what you show us doesn't help.

Inventory, Productnr being unique does not imply Productnr is unique.
If Productnr in table 1 is unique, you should make a unique constraint
on it. If it isn't unique you can't use a foreign key reference and you
will need to write your own trigger functions to do whatever makes sense
for your problem.

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org

Loading...