10.2.3 입력과 수정을 동시에 처리하기
지금까지 UPDATE 문으로 테이블에 저장된 데이터를 수정하는 방법을 알아봤습니다. 여기에 하나 더 소개할 내용이 있습니다. 신규 데이터 입력은 INSERT, 기존 데이터 수정은 UPDATE 문을 각각 사용했는데, 신규로 데이터를 입력하면서 동시에 수정하는 방법이 있습니다. 조건을 확인해 이미 대상 테이블에 값이 있으면 수정하고 없으면 입력하는 방법입니다.
구문 10-6
INSERT INTO 테이블명 (칼럼1, 칼럼2, ...)
VALUES 절(또는 SELECT 문)
ON DUPLICATE KEY UPDATE 칼럼 = 값1, 값2, ... ;
INSERT... ON DUPLICATE KEY UPDATE 구문은 INSERT 문장에 속합니다. 따라서 INSERT 문장에서 배운 구문을 그대로 사용할 수 있습니다. 다만 맨 끝에 ON DUPLICATE KEY UPDATE와 함께 변경할 칼럼, 값을 명시합니다. INSERT 문으로 데이터를 입력할 때, 대상 테이블에 기본 키 칼럼이 있으면 이 칼럼 값으로 중복 값을 입력하는 경우에 오류가 발생하죠. 하지만 ON DUPLICATE KEY UPDATE 구문을 추가하면 충돌이 발생하는 로우에서는 신규로 값을 입력하는 것이 아니라 기존에 저장된 값을 변경합니다.