postgresql 에러발생시 exception 처리를 되는데
프로시저나 테이블 실행완료시 쌓는 로그테이블에 에러발생시 error 로 업데이트를 쳐야되는데
문제는 exception처리문으로 에러는 발생하는 내용은 나오나
update문이나 insert문 등 처리는 동시에 안되는것 같습니다.
EXCEPTION발생시 특정 FUNCTION을 호출해서 LOG를 쌓아도 괜찮을거 같은데.. 방법을 모르겠습니다.
현재 쓰는 exception 처리문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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 ; |
입니다.