mysql_client_found_rows=0
DBD::mysql で insert on duplicate をした際に $sth->rows の返す結果が
- insert されなかった場合: 1
- insert された場合: 1
- update された場合: 2
となっていて mysql に繋いで直接コマンドを打った場合の affected rows と違って困るなぁと思っていたのですが
How to obtain the number of rows affected by a statement in MySQL - O'Reilly Answers
こういうことらしく matched rows を返すとのこと。
mysql_client_found_rows=0
とすることで、
- insert されなかった場合: 0
- insert された場合: 1
- update された場合: 2
となってしたいことの要件を満たしてくれました。