Locks in functions?

Started by Amir Zichermanover 21 years ago2 messagesgeneral
Jump to latest
#1Amir Zicherman
amir.zicherman@gmail.com

will locks work inside functions or only in transactions?

will this lock? ....

CREATE OR REPLACE FUNCTION public.sample(varchar)
RETURNS SETOF record AS
'
DECLARE
row RECORD;
BEGIN
LOCK TABLE "URL" IN ROW SHARE MODE;
FOR urlrow in EXECUTE \'SELECT * FROM "table1"\'
LOOP
UPDATE "table1" SET col1=5 WHERE "col2"=6
RETURN NEXT row;
END LOOP;
RETURN;
END;
'
LANGUAGE 'plpgsql' VOLATILE;

thanx, amir

#2Amir Zicherman
amir.zicherman@gmail.com
In reply to: Amir Zicherman (#1)
Re: Locks in functions?

sorry, i wrote the funciton wrong. here is what i meant to write:

CREATE OR REPLACE FUNCTION public.sample(varchar)
RETURNS SETOF record AS
'
DECLARE
row RECORD;
BEGIN
LOCK TABLE table1 IN ROW SHARE MODE;
FOR urlrow in EXECUTE \'SELECT * FROM "table1"\'
LOOP
UPDATE "table1" SET col1=5 WHERE "col2"=6
RETURN NEXT row;
END LOOP;
RETURN;
END;
'
LANGUAGE 'plpgsql' VOLATILE;

thanx, amir

On Tue, 10 Aug 2004 15:53:33 -0700, Amir Zicherman
<amir.zicherman@gmail.com> wrote:

Show quoted text

will locks work inside functions or only in transactions?

will this lock? ....

CREATE OR REPLACE FUNCTION public.sample(varchar)
RETURNS SETOF record AS
'
DECLARE
row RECORD;
BEGIN
LOCK TABLE "URL" IN ROW SHARE MODE;
FOR urlrow in EXECUTE \'SELECT * FROM "table1"\'
LOOP
UPDATE "table1" SET col1=5 WHERE "col2"=6
RETURN NEXT row;
END LOOP;
RETURN;
END;
'
LANGUAGE 'plpgsql' VOLATILE;

thanx, amir