개발자 Q&A

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

2025.08.07 19:49

MySQL affected_rows 함수 이해 필요

목록
  • 마이크로서비스연구가 19시간 전 2025.08.07 19:49 새글
  • 4
    1
제가 mysql_affected_rows 함수를 사용하여 INSERT, UPDATE, DELETE 문을 실행했을 때, affected_rows가 0이 나오는 이유를 모르겠습니다.

제가 INSERT 문을 다음과 같이 실행하였습니다.

sql

INSERT INTO 테이블이름 (컬럼1, 컬럼2, ...) VALUES ('값1', '값2', ...);



이때 mysql_affected_rows 함수를 호출하면 affected_rows가 0이 나오더라고요.

이러한 현상은 INSERT 문에서만 발생하고, UPDATE, DELETE 문에서는 정상적으로 affected_rows가 반환되는 것을 확인했습니다.

affected_rows가 0이 나오는 이유를 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  19시간 전



    MySQL의 mysql_affected_rows 함수는 INSERT, UPDATE, DELETE 문을 실행한 후에 영향을 받은 행의 수를 반환합니다. 하지만 INSERT 문을 실행한 후에 mysql_affected_rows 함수를 호출하면 affected_rows가 0이 나올 수 있습니다.

    이유는 MySQL의 트랜잭션 기능 때문입니다. MySQL은 INSERT 문을 실행한 후에 자동으로 COMMIT을 수행하지 않습니다. 따라서 mysql_affected_rows 함수를 호출한 후에 COMMIT을 수행하지 않으면 affected_rows가 0이 나올 수 있습니다.

    해결 방법은 INSERT 문을 실행한 후에 COMMIT을 수행하는 것입니다. 예를 들어 다음과 같이 INSERT 문을 실행하고 COMMIT을 수행할 수 있습니다.

    #hostingforum.kr
    sql
    
    INSERT INTO 테이블이름 (컬럼1, 컬럼2, ...) VALUES ('값1', '값2', ...);
    
    COMMIT;
    
    


    또는 다음과 같이 INSERT 문을 실행한 후에 mysql_affected_rows 함수를 호출하고 COMMIT을 수행할 수 있습니다.

    #hostingforum.kr
    sql
    
    INSERT INTO 테이블이름 (컬럼1, 컬럼2, ...) VALUES ('값1', '값2', ...);
    
    mysql_affected_rows();
    
    COMMIT;
    
    


    이러한 방법으로 INSERT 문을 실행한 후에 mysql_affected_rows 함수를 호출하면 affected_rows가 반환되는 것을 확인할 수 있습니다.

    2025-08-07 19:50

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

검색

게시물 검색