on duplicate key update할때 affected row수는?

mysql의 장점중 하나인

on duplicate key update 문을 이용할때 쿼리 실행으로 영향받은 row를 확인하고,

성공여부를 판단하고 이후 프로세스를 만들어 가는 경우가 있다.


이럴때,

insert into 테이블명 () values () on duplicate key update aa='a';

이렇게 하게 되면 affected row는 얼마일까?


이 쿼리 구문은 유니크키가 있는 테이블에서 실행할때 유용한데...

insert를 먼저 실행한후에 유니크키가 중복되는 데이타가 있으면 업데이트를 하게 된다.

따라서, 실행후 영향받은 row수는

중복되는 데이타가 없을때는 insert만 실행되므로 1 이고,

중복되는 데이타가 있을때는 insert실행시 중복 오류발생후, update되므로 2 가 된다.


쿼리 실행 함수를 만들어 쓸때, 이 부분을 잘 체크해서 만들어 가면 좋을것이다.