참조 제한조건이 있는 테이블에 데이터 삽입

참조 제한조건이 있는 테이블에 데이터를 삽입하는 경우, 다음 규칙을 고려해야 합니다.

상위 키가 있는 상위 테이블에 데이터를 삽입하는 경우, SQL은 다음을 허용하지 않습니다.

외부 키가 있는 종속 테이블에 데이터를 삽입하는 경우:

샘플 애플리케이션 프로젝트 테이블(PROJECT)을 변경하여 다음 두 개의 외부 키를 정의하십시오.

상위 테이블 열은 REFERENCES절에 지정되어 있지 않음에 유의하십시오. 참조된 테이블에 1차 키 또는 상위 키로 사용할 수 있는 적합한 고유 키가 있으면 열을 지정하지 않아도 됩니다.

PROJECT 테이블에 삽입되는 모든 행에는 부서 테이블의 일부 DEPTNO 값과 동일한 DEPTNO 값이 있어야 합니다(프로젝트 테이블의 DEPTNO가 NOT NULL로 정의되기 때문에 널값은 허용되지 않음). 행에는 직원 테이블의 일부 EMPNO 값과 동일하거나 널인 RESPEMP 값도 있어야 합니다.

DEPARTMENT 테이블에 일치하는 DEPTNO 값(‘A01’)이 없기 때문에 다음 INSERT문은 실패합니다.

   INSERT INTO  CORPDATA.PROJECT (PROJNO, PROJNAME, DEPTNO, RESPEMP)
           VALUES  ('AD3120', 'BENEFITS ADMIN', 'A01', '000010')

마찬가지로, EMPLOYEE 테이블에 EMPNO 값 ‘000011’이 없기 때문에 다음 INSERT문은 실패합니다.

   INSERT INTO CORPDATA.PROJECT (PROJNO, PROJNAME, DEPTNO, RESPEMP)
           VALUES ('AD3130', 'BILLING', 'D21', '000011')

DEPARTMENT 테이블에 일치하는 DEPTNO 값 ‘E01’이 있고 EMPLOYEE 테이블에 일치하는 EMPNO 값 '000010'이 있기 때문에 다음 INSERT문은 성공적으로 완료됩니다.

   INSERT INTO CORPDATA.PROJECT (PROJNO, PROJNAME, DEPTNO, RESPEMP)
           VALUES ('AD3120', 'BENEFITS ADMIN', 'E01', '000010')