
mysql_affected_rows 함수는 MySQL에서 INSERT, UPDATE, DELETE 문이 성공적으로 수행되었는지 확인하는 함수입니다.
이 함수는 MySQL 서버의 트랜잭션 로그를 읽어 수행된 행의 개수를 반환합니다.
INSERT 문은 새로운 행을 추가하는 경우, 트랜잭션 로그에 새로운 행이 추가되기 전에 이전 트랜잭션 로그가 아직 로드되지 않았기 때문에 mysql_affected_rows 함수는 이전 트랜잭션 로그의 행 개수를 반환합니다.
따라서 INSERT 문은 0을 반환하는 것입니다.
UPDATE, DELETE 문은 기존 행을 수정하거나 삭제하는 경우, 트랜잭션 로그에 변경된 행이 반영되기 전에 이전 트랜잭션 로그가 아직 로드되지 않았기 때문에 mysql_affected_rows 함수는 이전 트랜잭션 로그의 행 개수를 반환합니다.
하지만 MySQL 5.7 이상 버전부터는 INSERT 문도 mysql_affected_rows 함수가 1을 반환합니다.
이러한 이유는 MySQL 5.7 이상 버전부터는 INSERT 문이 성공적으로 수행되었을 때, mysql_affected_rows 함수가 1을 반환하도록 변경되었습니다.
따라서 mysql_affected_rows 함수를 사용할 때, INSERT 문은 1을 반환하고, UPDATE, DELETE 문은 1을 반환합니다.
이러한 변경은 MySQL 서버의 성능을 향상시키기 위해 이루어졌습니다.
하지만 MySQL 5.7 이하 버전에서는 INSERT 문이 0을 반환합니다.
따라서 MySQL 버전을 확인하고, mysql_affected_rows 함수의 동작 원리를 이해해야 합니다.
또한 mysql_affected_rows 함수를 사용할 때, INSERT 문은 1을 반환하고, UPDATE, DELETE 문은 1을 반환한다는 점을 기억해야 합니다.
이러한 이해는 mysql_affected_rows 함수를 사용할 때, 정확한 결과를 얻을 수 있도록 합니다.
2025-05-10 02:56