DB에서 unsigned 발생 시 exception 처리

비모·2022년 5월 15일
0

가정

특정 column을 감소시킨 후 insert를 하는 로직이 있는 경우가 있다.

ex) 광고를 등록할 때 user의 ticket count (unsgined)필드를 감소시킨 후 등록하고 광고를 insert하는 경우

이 때 해당 column이 0인경우 insert를 금지해야하는데 간단히 생각해보면 아래와 같은 선택지가 있다.

선택지

  1. 일단 빼보고 SQLException을 잡아 처리(column이 unsigned, column이 -1이 되면 ER_DATA_OUT_OF_RANGE이 발생함을 이용)
  2. 해당 field를 읽어보고 0이라면 was에서 exception 발생

결론

2번을 이용하는 것이 맞다.

Database는 동시성 문제로 Read를 제외한 작업의 경우 lock이 걸린다.
업데이트 하면서 나오는 db exception보다 읽은후 was에서 예외처리하는게 성능도 잡고 여러모로 좋다.

0개의 댓글