안녕하세요?
ON DUPLICATE KEY UPDATE 를 사용하던중에 의문점이 있어서 문의 드립니다.
INSERT INTO TEST (test_no, test_value) VALUES ( 1, 0 )
ON DUPLICATE KEY UPDATE test_value = test_value + 1;
이런 쿼리가 있다면..
첫번째 실행되어, INSERT가 될때에는
1 rows affected. 가 뜹니다.
그런데, 두번째 update가 될때에는
2 rows affected.
로 나옵니다.
변경된 행은 1개 이므로, 1 rows affected가 나와야 할 것 같다는 생각이 드는데요..
왜 이런것인지 궁금 합니다.
안녕하세요. 질문 감사 드립니다.
insert 시, “1 rows affected”라고 출력된 이유는 insert 작업만 수행되었기 때문입니다. Insert 시에는 affected row의 수가 2이상인 경우는 없습니다.
그러나 on duplicate key update문을 사용할 경우는 다음과 같습니다.
- insert가 정상적으로 수행되었을 경우 : "1 rows affected" 출력
- insert 시, 중복 오류가 발생하여 update문이 수행되었을 경우 : "2 rows affected" 출력
이는 CUBRID 뿐만 아니라, Mysql도 동일하게 동작합니다.