Thanks to the folks that helped me fix my earlier error today. I seem to be having a bad day. I am getting an error that I cannot understand, and I would appreciate another set of eyes looking at it. Here is the error Processing -> load_task.sql DELETE 0 ERROR: column "project_cost_category_key" does not exist LINE 9: SELECT project_cost_category_key ^ QUERY: WITH inserted AS ( INSERT into project_cost_category (category) VALUES ('MISC') RETURNING * ) SELECT project_cost_category_key = ( SELECT project_cost_category_key FROM inserted ) CONTEXT: PL/pgSQL function default_cost_category() line 25 at SQL statement Here is the function declaration: CREATE FUNCTION default_cost_category() RETURNS trigger AS $$ DECLARE _cost_category_key numeric; BEGIN /* ZZZZZ */ if NEW.project_cost_category_key IS NULL THEN /* DEBUG RAISE NOTICE 'Called default_cost_category() and NEW.project_cost_category_key is NULL' ; */ _cost_category_key = ( SELECT project_cost_category_key FROM project_cost_category WHERE category = 'MISC' ) ; /* DEBUG RAISE NOTICE '_cost_category_key = %', _cost_category_key ; */ IF _cost_category_key is NULL THEN WITH inserted AS ( INSERT into project_cost_category (category) VALUES ('MISC') RETURNING * ) SELECT project_cost_category_key INTO NEW.project_cost_category_key = ( SELECT project_cost_category_key FROM inserted ) ; ELSE NEW.project_cost_category_key = _cost_category_key; END IF; END IF; return NEW; END; $$ LANGUAGE PLPGSQL SECURITY DEFINER -- Set a secure search_path: trusted schema(s), then 'pg_temp'. SET search_path = ica, "user" , public VOLATILE ; Here are the 2 tables involved in this: CREATE TABLE bom_item ( bom_item_key integer DEFAULT nextval('ica.bom_item_key_serial') PRIMARY KEY , project_cost_category_key integer NOT NULL , project_key integer NOT NULL , project_bom_key integer NOT NULL , mfg_part_key integer NOT NULL , qty NUMERIC(9,2) NOT NULL , costing_unit_key integer NOT NULL, bom_item NUMERIC(5,0) , /* SDB I have removed the NOT NULL constraint on this for the moment. I am thinking that this will not be determined till a purchase order has been issued, and thus it probably needs to get populated from the PO creation process via a trigger cost_per_unit NUMERIC(6,2) NOT NULL , */ cost_per_unit NUMERIC(6,2) , po_terms_and_conditions_key integer , need_date date , order_date date , received_date date , po_no varchar , po_line_item NUMERIC(4,0) , po_revision varchar DEFAULT 0, po_rev_date date , descrip varchar , modtime timestamptz NOT NULL DEFAULT current_timestamp , FOREIGN KEY (project_key) references project(project_key) ON DELETE RESTRICT , FOREIGN KEY (project_bom_key) references project_bom(project_bom_key) ON DELETE RESTRICT , FOREIGN KEY (mfg_part_key) references mfg_part(mfg_part_key) ON DELETE RESTRICT , FOREIGN KEY (costing_unit_key) references costing_unit(costing_unit_key) ON DELETE RESTRICT , FOREIGN KEY (po_terms_and_conditions_key) references po_terms_and_conditions(po_terms_and_conditions_key) ON DELETE RESTRICT , FOREIGN KEY (project_cost_category_key) references project_cost_category(project_cost_category_key) ON DELETE RESTRICT , CONSTRAINT bom_constraint UNIQUE (bom_item , project_key) ); CREATE TABLE task_instance ( task_instance integer DEFAULT nextval('ica.task_instance_key_serial') PRIMARY KEY , project_key integer NOT NULL , project_cost_category_key integer NOT NULL , employee_key integer NOT NULL , work_type_key integer NOT NULL , hours numeric (5, 2) NOT NULL , work_start timestamptz NOT NULL NOT NULL , work_end timestamptz NOT NULL NOT NULL , modtime timestamptz NOT NULL DEFAULT current_timestamp , lock boolean DEFAULT TRUE , descrip varchar , FOREIGN KEY (employee_key) references employee(employee_key) ON DELETE RESTRICT , FOREIGN KEY (project_key) references project(project_key) ON DELETE RESTRICT , FOREIGN KEY (project_cost_category_key) references project_cost_category(project_cost_category_key) ON DELETE RESTRICT , FOREIGN KEY (work_type_key) references work_type(work_type_key) ON DELETE RESTRICT , FOREIGN KEY (work_type_key , employee_key , project_key ) REFERENCES rate (work_type_key , employee_key , project_key ) MATCH FULL ON DELETE RESTRICT , CONSTRAINT task_constraint UNIQUE ( employee_key , work_type_key , project_key , work_start , work_end ) ); And here is the trigger that is being fried CREATE TRIGGER default_cost_category_task_trig BEFORE INSERT OR UPDATE ON task_instance FOR EACH ROW EXECUTE FUNCTION ica.default_cost_category(); I realize this is a LOT of stuff to look at. I have been staring at this for quite a while now. As far as I can see the column that the error is returning is in the CTE, task_instance, AND project_cost_category tables, So I fail to see why this error is being returned. Which of the 3 locations of this column is the error related to? -- "They that would give up essential liberty for temporary safety deserve neither liberty nor safety." -- Benjamin Franklin