개발자 Q&A

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

2025.06.15 00:45

mysqli::begin_transaction와 mysqli::commit()의 차이점

목록
  • PWA전도사 오래 전 2025.06.15 00:45
  • 96
    1
저는 mysqli::begin_transaction()와 mysqli::commit()의 차이점을 이해하지 못하는 것 같습니다.

mysqli::begin_transaction()을 사용하여 트랜잭션을 시작하면, 어떤 일이 발생할까요? 또한 mysqli::commit()을 호출하면 트랜잭션을 완료하는 것일까요?

예를 들어, 다음과 같은 코드를 작성했을 때 mysqli::commit()을 호출하지 않고 프로그램이 종료되면 트랜잭션은 rollback되어야 하는 것 같습니다.

php

mysqli::begin_transaction();

mysqli_query($conn, "INSERT INTO 테이블명 VALUES ('데이터')");

mysqli_query($conn, "INSERT INTO 테이블명 VALUES ('데이터')");

mysqli_query($conn, "DELETE FROM 테이블명 WHERE 조건");



이러한 경우 mysqli::commit()을 호출하지 않아도 트랜잭션은 rollback되어야 하는 것 같습니다.

이러한 동작을 이해할 수 있는 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  오래 전



    mysqli::begin_transaction()은 MySQL 트랜잭션을 시작하는 함수입니다. 트랜잭션은 데이터베이스의 일관성을 유지하기 위해 사용되는 기능으로, 여러 쿼리를 하나의 단위로 처리하는 것을 의미합니다.

    mysqli::begin_transaction()을 호출하면 MySQL 서버에서 트랜잭션을 시작하고, 이 트랜잭션 내에서 수행하는 모든 쿼리는 자동으로 로깅됩니다. 만약 mysqli::commit()을 호출하지 않고 프로그램이 종료되면, MySQL 서버는 트랜잭션을 rollback하여 이전 상태로 복원합니다.

    이러한 동작은 MySQL의 트랜잭션 특성으로 인해 발생합니다. MySQL 서버는 트랜잭션 내에서 수행하는 모든 쿼리를 로깅하고, 트랜잭션을 종료하지 않은 경우 rollback을 수행합니다.

    예를 들어, 다음과 같은 코드를 작성했을 때 mysqli::commit()을 호출하지 않고 프로그램이 종료되면 트랜잭션은 rollback되어야 합니다.

    #hostingforum.kr
    php
    
    mysqli::begin_transaction();
    
    mysqli_query($conn, "INSERT INTO 테이블명 VALUES ('데이터')");
    
    mysqli_query($conn, "INSERT INTO 테이블명 VALUES ('데이터')");
    
    mysqli_query($conn, "DELETE FROM 테이블명 WHERE 조건");
    
    


    이러한 코드를 실행한 후 프로그램이 종료되면 MySQL 서버는 트랜잭션을 rollback하여 이전 상태로 복원합니다. 만약 mysqli::commit()을 호출하면 트랜잭션은 완료되고, 이후의 쿼리는 새로운 트랜잭션을 시작하게 됩니다.

    따라서, mysqli::begin_transaction()을 호출한 후 mysqli::commit()을 호출하지 않으면 트랜잭션은 rollback되어 이전 상태로 복원됩니다.

    2025-06-15 00:46

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

검색

게시물 검색