세 가지 제어 문장
BEGIN 또는 START TRANSACTION이 트랜잭션을 열어. COMMIT은 변경을 다른 세션에 보이고 디스크에 남도록 확정하며, ROLLBACK은 모두 버려. 실제 작업의 99%에서 이 세 명령이면 충분해.
앱에서는 드라이버가 같은 뜻을 감싸
Python의 psycopg에서는 conn.commit()과 conn.rollback()을 쓰고, SQLAlchemy 세션은 commit()이나 문맥 관리자로 경계를 다뤄. Node의 pg에서는 client.query('COMMIT')과 client.query('ROLLBACK')을 호출해. 표면 문법만 다를 뿐 의미는 같아.
실패 경로에서 반드시 되돌려
BEGIN 뒤 문장 하나가 실패하면 트랜잭션은 중단 상태에 머물 수 있어. 그 연결을 풀에 돌려보내기 전에 ROLLBACK하지 않으면 다음 요청까지 오류를 물려받아. 예외 처리에서 되돌리기를 빼먹지 마.