mysql을 사용하면서 처음 알게된 구문인데... INSERT 구문에 같이 쓰이게 된다.

명령어만 봐도 직관적으로 이해할 수 있는데...

INSERT할 때 KEY가 duplicate가 되었을 때, UPDATE하는 방법에 대해 정의할 수 있다.

예를 들어,
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
컬럼 a가 key라고 가정할 경우, 이미 컬럼 a의 값이 1인 row가 있을 경우 해당 row의 c컬럼의 값을 1 증가시키라는 의미이다.

프로그래머 입장에서는 귀찮게 select한 후 없으면 insert 있으면 update하는 것을 한방에 해결해 주긴 하지만, ANSI SQL이 아니라 그점이 좀 맘에 걸린다.

오늘 하고자 하는 얘기는... 쉽게 이해하는것 처럼 단순히 key에 대해서만 동작하지는 않는 다는 것이다.

메뉴얼을 잘 읽어본 분은 아시겠지만...

아래와 같은 경우에 동작하게 된다.
1. key
2. unique index

1번은 알고 있었는데, 2번을 모르고 있어서 만들어진 코드가 이해가 안가 살펴보다가 결국 메뉴얼을 정독하고 알게되었다. ^^

저 처럼 실수하는 분 없기를...

+ Recent posts