개발자 Q&A

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

2025.03.22 05:24

mysqli::release_savepoint에 대해 질문합니다.

목록
  • UX개발자 1일 전 2025.03.22 05:24
  • 2
    1
제가 현재 MySQLi와 트랜잭션을 사용 중인데, savepoint를 설정하고 release_savepoint를 호출할 때 정확히 어떤 역할을 하는지 이해가 잘 안됩니다.

savepoint를 설정하면 트랜잭션의 어느 부분에서부터 다시 시작할 수 있게 되는데, release_savepoint를 호출하면 이전 savepoint로 돌아가서 작업을 다시 시작할 수 있나요?

그리고 release_savepoint를 호출해도 rollback이 되나요?

또한, release_savepoint를 호출하는 시점에 트랜잭션의 상태가 어떻게 되는가요?

제가 이해한 바에 따르면, release_savepoint를 호출하면 savepoint가 해제되고, 트랜잭션의 상태가 이전 savepoint 이전의 상태로 돌아가게 됩니다.

하지만 이것이 정확한가요?

혹시 release_savepoint를 호출하는 시점에 트랜잭션 상태가 어떻게 되는지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    mysqli::release_savepoint은 savepoint를 해제하는 메서드입니다.

    savepoint를 설정한 후 release_savepoint을 호출하면, 트랜잭션의 이전 상태로 돌아가게 됩니다.

    이때, rollback은 호출되지 않습니다.

    release_savepoint을 호출한 후, 트랜잭션은 이전 savepoint 이전의 상태로 돌아가고, savepoint는 해제됩니다.

    즉, release_savepoint을 호출하면 트랜잭션의 이전 상태로 돌아가고, savepoint가 해제됩니다.

    예를 들어, 다음 코드를 보겠습니다.

    #hostingforum.kr
    php
    
    $mysqli = new mysqli("localhost", "username", "password", "database");
    
    
    
    $mysqli->autocommit(false);
    
    
    
    $mysqli->query("INSERT INTO 테이블명 (컬럼명) VALUES ('값')");
    
    
    
    $mysqli->query("SAVEPOINT savepoint1");
    
    
    
    $mysqli->query("INSERT INTO 테이블명 (컬럼명) VALUES ('값')");
    
    
    
    $mysqli->query("RELEASE SAVEPOINT savepoint1");
    
    
    
    $mysqli->query("INSERT INTO 테이블명 (컬럼명) VALUES ('값')");
    
    


    위 코드에서 release_savepoint을 호출하면, savepoint가 해제되고 트랜잭션의 이전 상태로 돌아갑니다.

    이때, rollback은 호출되지 않습니다.

    따라서, release_savepoint을 호출한 후 트랜잭션을 커밋하거나 롤백해야 합니다.

    예를 들어, 다음 코드를 보겠습니다.

    #hostingforum.kr
    php
    
    $mysqli->query("COMMIT");
    
    


    또는

    #hostingforum.kr
    php
    
    $mysqli->query("ROLLBACK");
    
    

    2025-03-22 05:25

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

검색

게시물 검색