0
CREATE OR REPLACE FUNCTION public.updatedata(userid_ integer)
RETURNS integer
AS $$
DECLARE
userdata_ integer;
BEGIN
LOOP
BEGIN
PERFORM 1 FROM public.footable f WHERE f.userid=userid_ LIMIT 1 FOR UPDATE ;
userdata_:=(SELECT f.userdata FROM public.footable f WHERE f.userid=userid_ );
UPDATE public.footable f SET userdata = userdata_ + 1 WHERE f.userid=userid_ ;
EXIT ;
EXCEPTION WHEN others THEN
END;
END LOOP;
RETURN userdata_ + 1;
EXCEPTION WHEN others THEN
END $$ language plpgsql;
은 내가, 유저 데이터 열에 대한 "lost update"
문제를 방지 할 수 있습니까?9.6
사실 난 처음에 serializable isolation
를 사용하고 싶어하지만, serializable isolation
에 약간의 오류 만 COMMIT 이후에 검출 할 수 있음을 밝혀 (link)
대단한 .... 감사합니다 .... – sommeguyy