만약 emp_test2 테이블을 생성할 때 칼럼 순서를 emp_no, emp_name, salary, hire_date와 같이 다르게 명시한다면 앞의 INSERT 문장을 실행했을 때 오류가 발생합니다. 따라서 INSERT 문을 작성할 때는 오류를 방지하도록 * 대신 입력할 칼럼을 모두 기술하는 것이 좋습니다.
결과를 보면 emp_test 테이블에서 사번이 1003와 1004, 2건을 조회해 emp_test2 테이블에 입력하므로 emp_test2 테이블에는 총 4건의 데이터가 있습니다.
코드 10-13
INSERT INTO emp_test2 (emp_no, emp_name, hire_date, salary)
SELECT emp_no, emp_name, hire_date, salary
FROM emp_test
WHERE emp_no >= 1004;
실행결과
코드 10-13을 실행하니 오류가 발생하면서 데이터 입력에 실패했습니다. 왜 오류가 났을까요?
원인은 기본 키입니다. emp_test 테이블에서 사번이 1004번 이상인 건을 조회해 이를 emp_test2 테이블에 입력하려고 했는데, 이미 emp_test2 테이블에는 사번이 1001~1004인 건이 들어 있습니다. 따라서 1004번 데이터가 중복으로 입력됩니다. 그런데 emp_no 칼럼은 기본 키 칼럼입니다. 기본 키 칼럼에 중복 값을 넣으면 기본 키가 충돌해 작업에 실패합니다. INSERT 문을 작성할 때는 기본 키 칼럼에 중복 값이 입력되지 않게 주의해야 합니다.