검색하다보니 없는거같아서 남깁니다.
대부분 아시겠지만 데이터가 있으면 update하고 없으면 insert 하는구문..
간혹 필요한데 자주안쓰다보니 까먹더라구요.
데이터가 있으면 update하고 없으면 insert 하는구문..
예를들어 상품 테이블이 아래와 같고
| goods_no | primary key auto_increment | |
| goods_code | varchar(20) | |
| goods_name | varchar(50) |
이미 아래 데이터가 존재할경우
| goods_no | goods_code | goods_name |
| 1 | A00001 | 모하비고스트 |
INSERT INTO 상품테이블 (goods_code, goods_name)
VALUES('A00001', '모하비고스트향수')
ON DUPLICATE KEY UPDATE goods_name='모하비고스트향수';
쿼리를 실행하면
goods_name부분이 '모하비고스트향수'로 바뀔거 같지만
계속 INSERT만 됩니다.
중요한건 UNIQUE INDEX
| goods_no | primary key auto_increment | |
| goods_code | varchar(20) | UNIQUE INDEX |
| goods_name | varchar(50) |
요렇게 하면 의도하는 대로 상품명만 '모하비고스트향수'로 바뀌게됩니다.
중복키관리는 이거외에 REPLACE INTO와 INSERT IGNORE가 더 있는데..
REPLACE INTO 는 기존데이터 삭제후 INSERT 하는 방식이라 고유 id값을 다른부분에서 사용한다면
골때리는 상황이 발생할수가 있습니다.(직접겪었.. ㅠㅠ)
INSERT IGNORE 는 중복 에러발생시 입력을 무시하는 방식.
그래서 on duplicate update 방식이 젤 좋은방식이 아닌가 생각됩니다.
예전에 어떤 사이트에서 on duplicate update 를 퍼포먼스 등의 문제로 사용하지 말라는 글을
얼핏 보긴했는데 해당부분을 다시 찾아봤는데 못찾겠네요.
혹시 찾으시면 공유 부탁드립니다^^;
댓글 6개
게시글 목록
| 번호 | 제목 |
|---|---|
| 18200 | |
| 18195 | |
| 18193 | |
| 18181 | |
| 18179 | |
| 18173 | |
| 18170 | |
| 18164 | |
| 18158 | |
| 18155 | |
| 18152 |
JavaScript
한글과컴퓨터 키워드추출스크립트.
2
|
| 18151 | |
| 18150 |
JavaScript
위에서 아래로 내려오는 효과 6가지
|
| 18140 | |
| 18139 | |
| 18138 |
JavaScript
마우스로 td 간격 조정하기.
1
|
| 18131 | |
| 18130 |
JavaScript
엘레먼트에 다이렉트로 변수,배열,객체 심기
|
| 18120 | |
| 18119 | |
| 18118 |
jQuery
0원팁- 숫자형 아이디에 접근하기
1
|
| 18117 |
jQuery
유용하게 써먹는 반응형 grid
1
|
| 18116 | |
| 18111 |
MySQL
db에서 트리거 만들기
|
| 18110 | |
| 18108 |
JavaScript
디바운스 debounce의 개념
1
|
| 18107 |
JavaScript
jquery 타이머 만들기
2
|
| 18106 | |
| 18100 | |
| 18090 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기