Postgresql 예외처리 방법 0 2 7,410

by 농sql [DB 기타] postgresql exception처리 [2019.06.20 10:14:38]


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;

입니다.

 

 

 

by 르매 [2019.06.20 10:57:39]

RAISE EXCEPTION 처리전에 UPDATE 하면 될 것 같은데요.
(Postegresql은 모르지만.. MySQL이나 MS-SQL에서는 그렇습니다.)


by 농sql [2019.06.20 11:09:24]

RAISE EXCEPTION 전에 넣어봤는데 안되서 다른방법으로 해서 해결은 했지만

이번엔 에러발생전 처리된 INSERT, UPDATE문들이 모두 실행이 안된 것처럼? 롤백 됐는지 모르겠지만

실행이 모두 안됐습니다.. 왜그런걸까요? 실행되게 가능할까요? 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입