Background Image
조회 수 37999 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
279 질의작성 synonym에 대하여 김민종 2023.09.07 257
278 질의작성 VALUES 절 활용하기 황영진 2020.05.13 814
277 질의작성 입력된 날자를 이용하여 해당 주차의 모든 날자 구하기 성진 2018.04.10 1108
276 질의작성 JAVA_SP를 이용해서 정규표현식을 이용해서 치환을 하자. file 성진 2017.10.10 1325
275 운영관리 CUBRID 8.2.2 ~ 8.4.x 버전에서 'ALTER SERIAL ... CACHE <cached_num> / NOCACHE' ERROR 해결 방법 주영진 2017.03.08 2161
274 운영관리 윈도우 OS에서 java sp 사용 시 Java VM is not running 해결 방법 정훈 2017.09.04 2229
273 운영관리 CUBRID 브로커와 시스템 메모리 정만영 2019.03.12 2369
272 질의작성 loose index scan을 활용한 효과적인 쿼리 튜닝 방안 박세훈 2017.06.01 2409
271 응용개발 CUBRID 와 DBCP의 관계 엄기호 2016.12.14 2795
270 기타 JBoss 사용 시 statement pooling 설정 손승일 2016.12.16 2924
269 질의작성 테이블 명세서 쿼리 1 성진 2017.08.04 3178
268 질의작성 subquery를 이용한 튜닝예제 file 김창휘 2016.12.27 3322
267 응용개발 CUBRID PHP 드라이버 빌드와 연동방법 정만영 2018.03.07 3764
266 질의작성 Cubrid는 어떤 쿼리를 동일한 쿼리로 판단할까? 이상신 2015.12.30 4010
265 질의작성 스키마 및 인덱스 선언에 따른 최대 용량 산정을 위한 ROW SIZE 확인 성진 2016.03.21 4179
264 운영관리 큐브리드 마스터 소켓 디렉토리 변경방법 정만영 2016.07.05 4218
263 운영관리 cubrid plandump ( plan cache정보확인) file 주현 2015.12.29 4300
262 운영관리 Invalid XASL tree node content 에러 손승일 2016.04.26 4477
261 응용개발 Windows에서 32bit 버전의 PHP 설치 후 CUBRID와 연동 실패 시 해결 방법 file 진우진 2016.03.28 4523
260 마이그레이션 CMT를 이용하여 원본 특정 테이블의 일부 데이터만 가져와 대상 테이블에 넣기 엄기호 2016.01.28 4558
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