Background Image
조회 수 38002 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

응용 개발을 진행하는 중 저장하고자 하는 데이터가 이미 존재하는지 여부에 따라 insert, update를 결정해야 하는 경우가 있다.

이러한 경우 보통 아래와 같은 절차에 따라 작업을 수행하게 된다.

1. 저장하고자 하는 데이터 존재 여부를 select 문으로 조회

2. 조회한 결과 데이터가 존재하지 않으면 insert, 존재하면 update

 

또 다른 방법은

1. update를 수행

2. 결과 row count 0이면 insert 수행

 

세 번째 방법은

1. 저장하고자 하는 테이블에 PK(또는 UNIQUE 제약)이 설정되어 있는 경우에 insert 수행

2. 결과 unique violation 에러가 발생하면 update 수행

 

위와 같은 방법을 사용하는데 CUBRID2008R3.0부터는 이걸 한번에 처리할 수 있는 방법이 추가 되었다.

바로 ON DUPLICATE KEY UPDATE 절 이다.

INSERT 문에서 ON DUPLICATE KEY UPDATE절을 사용하게 되면 UNIQUE 또는 PRIMARY KEY 제약 조건을 위반하는 레코드가 삽입되면 자동으로 컬럼 값을 새로운 값으로 갱신해준다.

 

아래 예제를 보면 사용 방법을 알 수 있다.

CREATE TABLE a_tbl (

id INT UNIQUE,

name VARCHAR,

phone VARCHAR DEFAULT '000-0000');

INSERT INTO a_tbl VALUES(1, 'aaa', '000-0000');

SELECT * FROM a_tbl;

;xr

 

=== <Result of SELECT Command in Line 1> ===

 

           id  name                  phone

=========================================================

            1  'aaa'                 '000-0000'

INSERT INTO a_tbl VALUES(1, 'aaa', '222-2222') ON DUPLICATE KEY UPDATE phone = '222-2222';

 

SELECT * FROM a_tbl WHERE id=1;

;xr

 

=== <Result of SELECT Command in Line 1> ===

 

           id  name                  phone

=========================================================

            1  'aaa'                 '222-2222'

 


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
179 응용개발 PHP에서 Prepared statement 사용시 NULL 값을 바인딩 하는 방법 1 Prototype 2009.11.27 19722
178 운영관리 브로커 상태를 확인할 때 status 의미 시난 2009.11.27 16559
177 운영관리 각 데이터베이스에 개별적 파라미터 적용하는 방법 정만영 2009.11.30 10183
176 운영관리 CUBRID LOCK 관련 오류(ERROR CODE = -75) 정리 정만영 2009.12.01 20690
175 운영관리 CUBRID JAVA Stored Procedure의 GC로그 출력방법 janus 2009.12.01 15317
174 질의작성 예제를 이용한 중복데이터 삭제 janus 2009.12.02 18542
173 질의작성 시스템 테이블을 이용한 인덱스 생성 구문 만들기 janus 2009.12.02 15143
172 운영관리 64비트 윈도우환경에서 32비트 ODBC 사용하기 Prototype 2009.12.09 22679
171 질의작성 CUBRID 예약어 사용방법 정만영 2009.12.09 17183
170 응용개발 CUBRID odbc 드라이버 설정방법. file seongjoon 2009.12.10 20328
169 운영관리 CUBRID 2008 R2.0 RPM 설치후 PHP모듈 로딩에 실패할 경우 Prototype 2009.12.10 14918
168 운영관리 리눅스 쉘프롬프트 상에서 질의 바로 수행하기 Prototype 2009.12.10 13640
167 운영관리 CUBRID제거 절차 janus 2009.12.12 15888
166 운영관리 CUBRID 복제 구성 시 Update id=id+1 미지원 cubebridge 2009.12.12 11651
165 운영관리 CUBRID2008 파티션 테이블 삭제 시 인덱스 drop 안 되는 현상 예시 cubebridge 2009.12.12 18468
164 CUBRID 매니저 한 개 PC에서 CUBRID7.3과 CUBRID2008R1.4 & R2.0 매니저 사용 방법 1 정만영 2009.12.12 13054
163 기타 좀비 프로세스 일괄 삭제하기 janus 2009.12.12 36149
162 기타 CUBRID 설치 서버의 OS bit 확인하는 방법과 CUBRID bit 확인 방법. file seongjoon 2009.12.15 18961
161 응용개발 JAVA SP를 통해 다른 데이터베이스 연결하는 경우 잊지 말자. 손승일 2009.12.16 17976
160 응용개발 CUBRID에서 systimestamp, sysdatetime default값에 대한 정의 cubebridge 2009.12.16 28266
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales