검색하다보니 없는거같아서 남깁니다.
대부분 아시겠지만 데이터가 있으면 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개
게시글 목록
| 번호 | 제목 |
|---|---|
| 17927 | |
| 17926 | |
| 17922 | |
| 17921 | |
| 17915 | |
| 17910 | |
| 17907 | |
| 17892 | |
| 17888 | |
| 17879 | |
| 17878 | |
| 17874 |
JavaScript
글자수 제한 가장 쉬운판.중 하나
|
| 17873 | |
| 17872 |
PHP
포럼 출력소스 [ 샘플본 ]
|
| 17871 |
PHP
게시판별 카테고리 만들기.
|
| 17870 |
PHP
댓글이나 답글은 로직이 같다.
|
| 17869 |
PHP
카테고리 만드는 예제.
|
| 17868 | |
| 17866 |
JavaScript
문구 복사하기 자바스크립트
|
| 17865 | |
| 17864 | |
| 17863 |
PHP
랜덤값 만들기 겹치기는
|
| 17862 | |
| 17859 | |
| 17856 | |
| 17845 |
JavaScript
페이지 로딩 애니메이션
|
| 17835 | |
| 17834 |
PHP
데이타 1개 가져오기
5
|
| 17826 | |
| 17823 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기