개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.15 11:48

Session::startTransaction에 대한 질문

목록
  • 패턴마스터 1일 전 2025.05.15 11:48
  • 6
    1
제가 현재 MySQL을 사용하여 웹 애플리케이션을 개발 중입니다.
Session::startTransaction를 사용하여 데이터베이스 트랜잭션을 관리하려고 합니다.
startTransaction를 호출하고 나서, commit이나 rollback을 호출할 때 어떤 순서로 호출해야 하는지 이해가 가지 않습니다.
startTransaction 호출 후 commit을 호출하면 rollback이 호출되지 않나요?
startTransaction을 호출하고 나서 rollback을 호출하면 commit이 호출되지 않나요?

이 문제에 대한 정확한 설명을 부탁드립니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    Session::startTransaction을 호출하면 데이터베이스 트랜잭션을 시작합니다. 이 시점에서 데이터베이스는 트랜잭션 상태로 전환되어, 데이터베이스에 대한 모든 변경은 트랜잭션 내에서 발생합니다.

    startTransaction 호출 후 commit을 호출하면 트랜잭션 내의 모든 변경이 데이터베이스에 반영됩니다. 이 시점에서 트랜잭션은 종료되고, rollback은 호출되지 않습니다.

    startTransaction을 호출하고 나서 rollback을 호출하면 트랜잭션 내의 모든 변경이 취소되고, 데이터베이스는 원래 상태로 돌아갑니다. 이 시점에서 commit은 호출되지 않습니다.

    따라서, 트랜잭션 관리를 위해서는 다음과 같은 순서로 호출해야 합니다.

    1. startTransaction을 호출하여 트랜잭션을 시작합니다.
    2. 트랜잭션 내의 변경을 수행합니다.
    3. commit을 호출하여 트랜잭션 내의 변경을 데이터베이스에 반영합니다.
    4. rollback을 호출하여 트랜잭션 내의 변경을 취소합니다.

    만약 트랜잭션 내의 변경을 취소하고 싶다면, startTransaction을 호출하고 나서 rollback을 호출하면 됩니다. 만약 트랜잭션 내의 변경을 데이터베이스에 반영하고 싶다면, startTransaction을 호출하고 나서 commit을 호출하면 됩니다.

    2025-05-15 11:49

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 19,929건 / 7 페이지

검색

게시물 검색