2013-05-18 4 views
0

나는 테이블에 Dnumber을 참조하는 외래 키 Dno을 가진 EMPLOYEE 테이블이 있습니다. DEPARTMENT 테이블에는 을 참조하는 외래 키 Mgr_ssnEMPLOYEE 테이블에 있습니다. PSQL - 변경된 테이블에 데이터를 삽입하는 방법?

나는
ALTER TABLE employee 
ADD foreign key (dno) references department(dnumber) 
    on delete restrict on update cascade; 

(DNO와 Mgr_ssn 모두 NULL되지 않음)

하지만 항상 참조 무결성 제약 조건을 위반 지금은, 데이터를 삽입하는 방법을 혼란 스러워요, 어떤 제안을 사용하여 테이블을 생성 ?

감사합니다 :)

답변

0

외부 키는 일반적으로 "null가 아닌"제약 조건을 부여하지 않습니다. 부서가 지정되지 않은 신입 사원이 있다면 무엇을 할 것입니까? 또는 매니저가없는 새로운 부서.

여전히 문제가 발생하면 Oracle Constraints 속성 "DEFERRABLE"을 사용해야합니다. 즉, 모든 제한 조건은 확약 지점에서만 점검됩니다. 따라서 dno와 empnos를 먼저 삽입하고 나중에 커밋 할 수 있습니다. 이 시점에서 FK가 존재할 때 제약 viokation 없을 것입니다. 돕는

그런 부서에 동일한 --Do

ALTER TABLE employee ADD foreign key (dno) references department(dnumber) INITIALLY DEFERRED DEFERRABLE;

, Insert into emp (...) insert into dept(...) commit;

+0

감사합니다 : D – user2397539

관련 문제