On Saturday 28 December 2002 3:48 pm, Stephan Szabo wrote: > On Sat, 28 Dec 2002, Gary Stainburn wrote: > > When I create the database, I use the COPY command. The ranks and > > jobtypes are populated okay but the abilities table is empty. However, > > if I then INSERT the data the inserts work fine. > > Do *all* of the inserts work? If any one of the rows fails I believe > the entire copy fails. Specifically, unless I miss something: > > inserting into abilities > ejid edid erid > 6 O 3 > > So looking for > (6,'O') in jobtypes > and > (3,'O') in ranks. > > I don't see the latter row so you're violating the constraint I believe. > Are you sure you want to reference (rid, rdid) in ranks and not > (rrank, rdid)?
Hi Stephan, Thanks for this. The constraint was correct but the data was wrong. I've fixed it and it's now working. Gary > > > Anyone got any ideas why? > > > > create table ranks ( -- staff promotion ladders by dept. > > rid int4 default nextval('ranks_rid_seq'::text) unique not null, > > rdid character references depts(did), -- department > > rrank int4 not null, -- departmental rank > > rdesc character varying(40), -- Rank Description > > constraint ranks_rank unique (rdid, rrank) > > ); > > create unique index rk_index on ranks using btree ("rid", "rdid"); > > > > create table jobtypes ( -- jobs that require doing > > jid int4 default nextval('jobs_jid_seq'::text) unique not null, > > jdid character references depts(did), -- Department ID > > jdesc character varying(40) -- job description > > ); > > create unique index jt_index on jobtypes using btree ("jid", "jdid"); > > > > create table abilities ( -- defines which jobtypes ranks are able for > > ejid int4 not null, -- jobtype ID > > edid character not null, -- dept ID > > erid int4, -- rank ID > > constraint c2 foreign key (ejid, edid) references jobtypes (jid, jdid), > > constraint c2 foreign key (erid, edid) references ranks (rid, rdid) > > ); > > > > copy "ranks" from stdin; > > 1 F 1 Cleaner > > 2 F 2 Passed Cleaner > > 3 F 3 Fireman > > 4 F 4 Passed Fireman > > 5 F 5 Diesel Driver > > 6 F 6 Driver > > 7 F 7 Inspector > > 8 O 1 Trainee TTI > > 9 O 2 Ticket Inspector > > 10 O 3 Trainee Guard > > 11 O 4 Guard > > 12 M 1 Volunteer > > 13 M 2 Apprentice > > 14 M 3 Fitter > > 15 M 4 Charge Fitter > > 16 M 5 Manager > > 17 A 1 Admin Staff > > 18 A 2 Roster Admin > > 19 A 3 Webmaster > > 20 S 1 Station Staff > > 21 S 2 Station Foreman > > \. > > > > copy "jobtypes" from stdin; > > 1 F Cleaner > > 2 F Ride-Out > > 3 F Fireman > > 4 F Driver > > 5 F Charge Cleaner > > 6 O Guard > > 8 M Duty Fitter > > \. > > > > copy "abilities" from stdin; > > 1 F 1 > > 2 F 1 > > 3 F 2 > > 3 F 3 > > 4 F 4 > > 4 F 5 > > 4 F 6 > > 5 F 3 > > 5 F 4 > > 6 O 3 > > 8 M 3 > > \. > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED]) -- Gary Stainburn This email does not contain private or confidential material as it may be snooped on by interested government parties for unknown and undisclosed purposes - Regulation of Investigatory Powers Act, 2000 ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org