[개발 일지] 게시판(트랜잭션)

홍범선·2023년 8월 27일
0

MyStory 개발일지

목록 보기
14/27

트랜잭션

사용배경

게시판 쓰기 개발을 진행 중이 였다. 게시판 쓰기버튼을 누르면 bbs테이블에 입력한 게시판 정보들이 저장하는 SQL문과 게시판 ID별로 구분된 recommend테이블에 추천현황 정보를 저장하는 SQL문이 필요했다.


위에 이미지는 bbs테이블이다.

위에 이미지는 recommend 테이블이다.
즉 2개의 SQL문 하나라도 실패가되면 로직상 문제가 생긴다. 무조건 2개가 성공하거나 그렇지 않을 때엔 실패를 하게 해야했다. 이 때 트랜잭션이라는 것을 사용했다.


beginTransaction

위에 이미지를 보게 되면 beginTransaction이 있다. 이것은 트랜잭션을 지금 사용하겠다라는 의미이다. SQL문을 실행해도 commit, rollback을 만나지 않는 이상 반영이 되지 않는다.

commit

bbsPrmise보면 isFinish가 true일 때 commit을 한다. 이렇게 되면 2개의 SQL이 에러가 없이 정상적으로 동작할 때 commit을 할 수 있다.

rollback

만약 2개의 sql문을 실행하다가 에러가 발생하면 프로미스 객체에서 reject가 반환이 되어 catch로 빠지게 된다. 그래서 rollback을 하게 되면 이전에 했던 SQL문들이 적용되지 않는다.

이렇게 여러개의 SQL문이 서로 연관이 있고 중요하다면 트랜잭션을 사용하여 보다 안정적이게 만들 수 있었다.

profile
알고리즘 정리 블로그입니다.

0개의 댓글