On Fri, 12 Mar 2004, Ryan Vaughan wrote:
> I have a table with 4 columns, 3 of which make up a composite primary key.
> None of these columns are unique, but the combination of the the three
> primary keys will be unique:
>
> CREATE TABLE Table1 (
> col1 integer,
> col2 varchar(20),
> col3 varchar(20),
> col4 varchar(20),
> CONSTRAINT PRIMARY KEY (col1, col3, col4)
> );
>
> In another table I have 3 columns:
>
> CREATE TABLE Table2 (
> field1 integer,
> field2 integer,
> field3 integer,
> );
>
> I'd like to have field2 in table2 be a foreign key of col1 in table1. Since
> col1 is not unique, is this possible or do I have to either bring in
> extraneous data from table1...col1, col2, and col3, or create some unique
> counter in table1 to use as reference? All I care about in field2 of table2
Pretty much one of these is what is required to use foreign keys.
> is that it matches something in col1 in table1, I don't want the other data
> in table1. I've searched archives but maybe I'm not looking for the right
> thing. Thanks.
However, are you actually looking for a true foreign key constraint? Many
times people don't care about the reverse prevention of update/delete to
Table1 being prevented. If that's the case you're in, a simpler trigger
in plpgsql may be closer to what you want.