PostgresSQL에서 분리 수준 인 REPEATABLE_READ
에서 실행하는 함수를 생성했다고 가정합니다.PostgreSQL에서`동시 업데이트 '오류를 잡습니다.
CREATE FUNCTION some_stuff() RETURNS void AS $$ BEGIN -- do stuff that could throw an error END; $$ LANGUAGE plpgsql;
이 함수는 내부적으로 다음과 같은 오류 던져하는 것이 가능 : ERROR: could not serialize access due to concurrent update
합니다. 이 오류를 포착하고 내부적으로 함수/트랜잭션을 반복하는 방법이 있습니까? 그래서 이런 일이 :
CREATE FUNCTION some_stuff() RETURNS void AS $$ BEGIN try { -- do stuff that could throw an error } catch (error) { call some_stuff(); } END; $$ LANGUAGE plpgsql;
을 또는이 오류는이 연료 소모량을 호출되는 즉 자바 응용 프로그램 수준에서 수행 할 잡기있다?
약 :'이미 진행 중이 아닌 트랜잭션에 암시 적으로 래핑됩니다 .'. A와 B의 두 함수가 있고 내부적으로 B가 내부적으로 B를 호출하면 하나의 트랜잭션 (A 실행을 위해 생성됨)이 있고 B가 실행된다는 것을 의미합니까? ('A '가 호출 할 때)이 단일 트랜잭션 내에서 수행되고 있습니까? – insumity
@foobar 수정. 중첩 된 트랜잭션 (begin/except blocks, subtransactions)은 가능하지만 자율적 인 확약 또는 트랜잭션 일시 중단/재개는 불가능합니다. –