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)? > > 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])