프로필사진
김핑9
Ping9
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total

티스토리 뷰

반응형

Java에서 MySQL을 사용하던 중 executeUpdate() 를 사용했을 때

insert, update, delete는 해당 쿼리문이 수행된 행의 수가 return되는데

insert into on duplicate key update를 사용했을 때는 어떤 수가 return이 되는지 몰라서 조사했던 내용이다.

 

* insert into on duplicate key update를 실행했을 때 return값

- 1: insert 됐을 때 (duplicate key가 아닐때)

- 2: duplicate key라 update가 됐을 때

- 0: 변경된 내용이 없을 때

 

가끔 변경된 내용이 아무것도 없을 때도 return값이 1인 경우가 있다는데

자세한 내용은 https://bugs.mysql.com/bug.php?id=39352 를 참고하자.

(무슨 설정을 만져야되는거 같은데 나는 잘 모르겠다ㅎ)

 

참고로 해당 값을 컨트롤하는 flag에 대한 MySQL 사이트에 나와있는 설명이다.

해당 flag를 어떻게 설정하냐에 따라 변경된 내용이 없을때의 리턴값이 달라지는 듯하다.

- useAffectedRows

Don't set the CLIENT_FOUND_ROWS flag when connecting to the server (not JDBC-compliant, will break most applications that rely on "found" rows vs. "affected rows" for DML statements), but does cause "correct" update counts from "INSERT ... ON DUPLICATE KEY UPDATE" statements to be returned by the server.

Default: false

Since version: 5.1.7

반응형

'공부 > Java' 카테고리의 다른 글

[JAVA] 특정 문자열 사이 부분만 replace 하기  (2) 2020.07.16
댓글