코드 10-21
INSERT INTO emp_update2
SELECT emp_no, emp_name, hire_date, salary
FROM emp_update1 a
WHERE emp_no BETWEEN 1003 AND 1005
ON DUPLICATE KEY UPDATE emp_name = a.emp_name, salary = a.salary;
SELECT *
FROM emp_update2;
실행결과
코드 10-21의 INSERT 문은 emp_update1 테이블에서 사번이 1003에서 1005 사이에 있는 3건을 읽어 와서 emp_update2 테이블에 넣는 문장입니다. 그런데 emp_update2 테이블에는 이미 1001~1004까지 데이터가 저장되어 있죠. 따라서 새로 넣는 데이터 중 1003과 1004는 중복 값이므로 오류가 발생해야 합니다. 그런데 ON DUPLICATE KEY UPDATE 구문 때문에 이 두 건은 데이터를 새로 입력하지 않고 emp_name과 salary 칼럼 값을 emp_update1 테이블의 값으로 변경합니다.