Thread: Foreign Key Question
Example: Table 1: Inventory, Productnr, Productserial (PK Inventory, Prouctnr) Table 2: 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? Thanks for any answer Tuan
On Mon, 9 Feb 2004, Tuan Luu wrote: > Example: > > Table 1: > Inventory, Productnr, Productserial > (PK Inventory, Prouctnr) > > Table 2: > 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).
On Mon, Feb 09, 2004 at 08:59:12 +0100, Tuan Luu <tuanluu@gmx.ch> wrote: > Example: > > Table 1: > Inventory, Productnr, Productserial > (PK Inventory, Prouctnr) > > Table 2: > 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.