From: | Tomasz Myrta <jasiek(at)klaster(dot)net> |
---|---|
To: | Gary Stainburn <gary(dot)stainburn(at)ringways(dot)co(dot)uk> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: references table(multiple columns go here) |
Date: | 2002-12-19 11:30:57 |
Message-ID: | 3E01ADF1.5050003@klaster.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Gary Stainburn wrote:
> On Thursday 19 Dec 2002 9:58 am, Tomasz Myrta wrote:
>
> >Gary Stainburn wrote:
> >
> >>That did the trick. However, I now have another problem with the
> >>constraint
> >>complaining about there not being an index to refer to. However,
> >>there is.
The error is inside declaration of table "ranks.
You can't create two similiar foreign keys: one based on field (rrank)
and second one based on fields (rdid,rrank).
You have to change:
jrank int4 not null references ranks(rrank), -- needs sorting
to
jrank int4 not null, -- needs sorting
> This is probably because of my background in as a COBOL programmer where
> having multiple fields of the same name can cause problems (especially
> with
> MF Cobol which only partially supports it) as well as early (read
> early 80's)
> database experince where it wasn't allowed. Also, I find it usefull
> because
> I know immediately which table a field has come from.
As you wish.
>
>
> Why does it make joins easier to use the same name for fields?
If you create queries like this, you get rid of duplicates.
select *
from
jobtypes
join departments using (did)
If you are afraid of duplicates, you can always use an alias:
select
ranks.rank_id as rid,
...
If you want, here is my minimal version of your tables:
create table depts (
dept_id int4 primary key,
...
};
create table ranks (
rank_id int4 default nextval('ranks_rid_seq') primary key,
dept_id int4 references depts, -- department
rank int4 not null, -- departmental rank
rdesc character varying(40) -- Rank Description
);
create table jobtypes (
jobtype_id int4 default nextval('jobs_jid_seq') primary key,
rank_id int4 references ranks(rank_id),
jdesc character varying(40) -- job description
);
Tomasz Myrta
From | Date | Subject | |
---|---|---|---|
Next Message | Gary Stainburn | 2002-12-19 11:37:38 | Re: references table(multiple columns go here) |
Previous Message | Gary Stainburn | 2002-12-19 10:30:11 | Re: references table(multiple columns go here) |