oracle sqlplus 테이블 데이터 삽입 시 '부모 키 없음' 오류 질문.

조회수 871회

현재 oracle sqlplus를 공부 중인 학생입니다.

책을 보며 초반 부분에 테이블 생성 한 뒤 데이터를 삽입 시 오류가 발생하여 질문 드립니다.

    DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
        10 ACCOUNTING                   NEW WORK
        20 RESEARCH                     DALLAS
        30 SALES                        CHICAGO
        40 OPERATIONS                   BOSTON

위의 것이 dept 테이블

create table emp(
empno    number(4)
constraint pk_emp primary key,
ename    varchar2(10),
job      varchar2(9),
mgr      number(4)
    constraint fk_mgr references emp(empno),
hiredate date,
sal      number(7,2),
comm     number(7,2),
deptno   number(2)
    constraint fk_deptno references emp(empno));

emp 테이블은 위의 형식으로 만들었고

insert into emp values (7839,'KING','PRESIDENT',NULL,
  2     to_date ('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
insert into emp values (7839,'KING','PRESIDENT',NULL,
*
1행에 오류:
ORA-02291: 무결성 제약조건(SYS.FK_DEPTNO)이 위배되었습니다- 부모 키가 없습니다

데이터 입력 시 이런 식으로 오류가 발생합니다.

부모 키, 자식 키가 뭔지도 모르겠고 책 초반에 아무런 설명 없이 오류가 뜨니 당황스럽네요..

검색을 해봐도 해결 방법을 찾을 수 없어 이렇게 질문드립니다.

해결 방법 알려주시면 감사하겠습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 관계형데이터베이스(RDB)에서 테이터의 정합성 유지를 위해 제약조건(constraint) 를 사용합니다. 사원테이블(EMP) 생성 시 사번(DEPT_NO)에 constraint 를 사용하였으며 EMP 테이블에 데이터 INSERT 시 10이라는 부서코드로 등록을 하려고 할때 내부적으로 DEPT 테이블에 DEPT_NO가 10인 데이터를 찾게 됩니다. INSERT SQL 문에는 문제가 없어 보입니다. emp table 삭제 후 아래처럼 생성하시기 바랍니다. dept_no constraint가 잘못 생성되었습니다.

    create table emp( empno number(4) constraint pk_emp primary key, ename varchar2(10), job varchar2(9), mgr number(4) constraint fk_mgr references emp(empno), hiredate date, sal number(7,2), comm number(7,2), deptno number(2) constraint fk_deptno references dept(deptno));

    테이블삭제는 drop table emp; 입니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)