postgresql 에러발생시 exception 처리를 되는데
프로시저나 테이블 실행완료시 쌓는 로그테이블에 에러발생시 error 로 업데이트를 쳐야되는데
문제는 exception처리문으로 에러는 발생하는 내용은 나오나
update문이나 insert문 등 처리는 동시에 안되는것 같습니다.
EXCEPTION발생시 특정 FUNCTION을 호출해서 LOG를 쌓아도 괜찮을거 같은데.. 방법을 모르겠습니다.
현재 쓰는 exception 처리문
DECLARE TEXT_VAR1 TEXT; TEXT_VAR2 TEXT; TEXT_VAR3 TEXT; BEGIN -- 에러발생 구문 -- --로그 INSERT INSERT INTO TB_LOG (SEQ, STEP) VALUES (1, 'INSERT'); EXCEPTION WHEN OTHERS THEN GET STACKED DIAGNOSTICS TEXT_VAR1 = RETURNED_SQLSTATE, TEXT_VAR2 = MESSAGE_TEXT, TEXT_VAR3 = PG_EXCEPTION_CONTEXT; RAISE EXCEPTION E'RETURNED_SQLSTATE: %,\n\nMESSAGE_TEXT: %,\n\nPG_EXCEPTION_CONTEXT: %', text_var1, text_var2, text_var3; UPDATE TB_LOG SET STEP = 'ERROR' WHERE SEQ = 1; END;
입니다.