DBMS/공부

0. 예외 (Exception)

pakms980319 2024. 2. 8. 11:28

예외 (Exception)

데이터베이스 작업 중 발생할 수 있는 오류 또는 예기치 않은 상황

  • 경미한 오류의 일종
  • 실행 오류의 하위 카테고리
  • 예외 발생 시 전체 프로그램의 Runtime 이 유지되도록 처리하는 작업을 예외처리라고 한다.

DECLARE (ACTION) HANDLER FOR (ERROR)
BEGIN
    예외 처리 작업
END;

 

1. 특정 에러코드의 예외 처리

테이블 X 에러코드 1146
컬럼 매치 X 에러코드 1136

 

특정 에러코드 1146, 1136에 대한 예외 처리 작업을 만들어주었다.

 

에러코드 1146에 대한 예외처리
에러코드 1136에 대한 예외처리

 

에러코드에 대한 예외 처리 작업을 만들어주니 에러로 인한 중단 없이 끝까지 실행이 되었다.


2. 발생한 에러 코드와 메시지 조회

SHOW ERRORS;

이전에 발생했던 에러에 대한 정보를 출력해준다.


3. SQLEXCEPTION

DECLARE (ACTION) HANDLER FOR SQLEXCEPTION
BEGIN
    예외 처리 작업
END;

모든 에러코드에 대응하는 에러명이다.

 

 

모든 에러에 대해 sqlexception 하나의 에러명으로 한 가지 예외 처리를 수행하였다.

예외 처리 1
예외 처리 2

 

문제점

모든 에러에 대해 하나의 에러로 예외 처리를 하면 어디에 어떤 에러가 발생했는지 파악하기 힘들다.


4. Error_log를 기록하는 테이블 처리

 

1) 테이블 정의

데이터를 기록하는 테이블
Error_log를 기록하는 테이블

 

2) 예외 처리 작성

두 가지 예외 처리를 작성한 프로시저

 

 

2-1) 첫 번째 예외 처리

첫 번째 예외 처리

 

에러 객체 참조

GET DIAGNOSTICS CONDITION 1

MYSQL_ERRNO, ERROR_MESSAGE

 

에러 코드 1062에 대한 예외 처리 작성

  • 에러 코드와 메시지를 tbl_std_errlog 테이블에 삽입

 

예외 발생

 

발생한 에러 정보가 테이블에 삽입되었다


2-2) 두 번째 예외 처리

두 번째 예외 처리

 

예외 발생

 

발생된 에러에 대해 데이터가 수정되어 삽입되었다

'DBMS > 공부' 카테고리의 다른 글

DB 영상 참고 (1)  (0) 2024.09.29
0. Trigger  (1) 2024.02.08
0. 오류 처리  (0) 2024.02.08
0. TRANSACTION  (1) 2024.02.08
0. STORED PROCEDURE  (0) 2024.02.07