2013-05-18 61 views
0

我有一個EMPLOYEE表,外鍵Dno表示DEPARTMENT表中的Dnumber。在DEPARTMENT表中還有外部密鑰Mgr_ssn,它指EMPLOYEE表中的SsnPSQL - 如何將數據插入到已更改的表中?

我創建使用

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

(DNO和Mgr_ssn都是NOT NULL)

但現在我很困惑如何插入數據,因爲它總是違反參照完整性約束,任何建議表?

謝謝:)

回答

0

外鍵通常不會被賦予「非空」約束。如果有新員工沒有被分配到一個部門,你會怎麼做?或者沒有經理的新部門。

不過,對於您的問題,您應該使用Oracle約束條件的「DEFERRABLE」屬性。這意味着,任何約束都將僅在提交點進行檢查。因此,您可以先插入dno和empnos,稍後再提交。在這一點上,FK的存在將不會造成任何限制。

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

--Do同爲部門

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

+0

感謝您的幫助:d – user2397539