Search Postgresql Archives

Not my day :-( Another syntax error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux