-- providing upgrade script for subsite_callback__new -- added select define_function_args('subsite_callback__new','callback_id;null,event_type,object_type,callback,callback_type,sort_order;null'); -- -- procedure subsite_callback__new/6 -- CREATE OR REPLACE FUNCTION subsite_callback__new( new__callback_id integer, -- default null, new__event_type varchar, new__object_type varchar, new__callback varchar, new__callback_type varchar, new__sort_order integer -- default null ) RETURNS integer AS $$ DECLARE v_callback_id subsite_callbacks.callback_id%TYPE; v_sort_order subsite_callbacks.sort_order%TYPE; BEGIN if new__callback_id is null then select nextval('t_acs_object_id_seq') into v_callback_id; else v_callback_id := new__callback_id; end if; if new__sort_order is null then -- Make this the next event for this object_type/event_type combination select coalesce(max(sort_order),0) + 1 into v_sort_order from subsite_callbacks where object_type = new__object_type and event_type = new__event_type; else v_sort_order := new__sort_order; end if; -- begin insert into subsite_callbacks (callback_id, event_type, object_type, callback, callback_type, sort_order) values (v_callback_id, new__event_type, new__object_type, new__callback, new__callback_type, v_sort_order); -- TODO: Can we do this properly? -- If not, could move select before insert -- exception when dup_val_on_index then -- select callback_id into v_callback_id -- from subsite_callbacks -- where event_type = new__event_type -- and object_type = new__object_type -- and callback_type = new__callback_type -- and callback = new__callback; -- end; return v_callback_id; END; $$ LANGUAGE plpgsql;