mysql을 사용하면서 처음 알게된 구문인데... INSERT 구문에 같이 쓰이게 된다.
명령어만 봐도 직관적으로 이해할 수 있는데...
INSERT할 때 KEY가 duplicate가 되었을 때, UPDATE하는 방법에 대해 정의할 수 있다.
예를 들어,
프로그래머 입장에서는 귀찮게 select한 후 없으면 insert 있으면 update하는 것을 한방에 해결해 주긴 하지만, ANSI SQL이 아니라 그점이 좀 맘에 걸린다.
오늘 하고자 하는 얘기는... 쉽게 이해하는것 처럼 단순히 key에 대해서만 동작하지는 않는 다는 것이다.
메뉴얼을 잘 읽어본 분은 아시겠지만...
아래와 같은 경우에 동작하게 된다.
1. key
2. unique index
1번은 알고 있었는데, 2번을 모르고 있어서 만들어진 코드가 이해가 안가 살펴보다가 결국 메뉴얼을 정독하고 알게되었다. ^^
저 처럼 실수하는 분 없기를...
명령어만 봐도 직관적으로 이해할 수 있는데...
INSERT할 때 KEY가 duplicate가 되었을 때, UPDATE하는 방법에 대해 정의할 수 있다.
예를 들어,
INSERT INTO table (a,b,c) VALUES (1,2,3)컬럼 a가 key라고 가정할 경우, 이미 컬럼 a의 값이 1인 row가 있을 경우 해당 row의 c컬럼의 값을 1 증가시키라는 의미이다.
ON DUPLICATE KEY UPDATE c=c+1;
프로그래머 입장에서는 귀찮게 select한 후 없으면 insert 있으면 update하는 것을 한방에 해결해 주긴 하지만, ANSI SQL이 아니라 그점이 좀 맘에 걸린다.
오늘 하고자 하는 얘기는... 쉽게 이해하는것 처럼 단순히 key에 대해서만 동작하지는 않는 다는 것이다.
메뉴얼을 잘 읽어본 분은 아시겠지만...
아래와 같은 경우에 동작하게 된다.
1. key
2. unique index
1번은 알고 있었는데, 2번을 모르고 있어서 만들어진 코드가 이해가 안가 살펴보다가 결국 메뉴얼을 정독하고 알게되었다. ^^
저 처럼 실수하는 분 없기를...
'programming > MySQL' 카테고리의 다른 글
MySQL unique index생성 시 size 제한 (0) | 2009.02.17 |
---|---|
mysql의 rlike (REGEXP) (0) | 2007.02.01 |
database like 검색에서 '%x'와 ('x%' 또는 '%x%')의 차이 (0) | 2007.01.09 |