-- -- workflow_case__lock_token/4 -- create or replace function workflow_case__lock_token( integer, character varying, integer, integer ) returns int4 as $$ declare lock_token__case_id alias for $1; lock_token__place_key alias for $2; lock_token__journal_id alias for $3; lock_token__task_id alias for $4; begin -- FIXME: rownum -- update wf_tokens -- set state = 'locked', -- locked_task_id = lock_token__task_id, -- locked_date = now(), -- locked_journal_id = lock_token__journal_id -- where case_id = lock_token__case_id -- and place_key = lock_token__place_key -- and state = 'free' -- and rownum = 1; update wf_tokens set state = 'locked', locked_task_id = lock_token__task_id, locked_date = now(), locked_journal_id = lock_token__journal_id where token_id = (select token_id from wf_tokens where case_id = lock_token__case_id and place_key = lock_token__place_key and state = 'free' limit 1); return 0; end;$$ language plpgsql;