PSQL - 如何将数据插入更改的表?

时间:2013-05-18 19:31:28

标签: sql insert alter-table

我有一个EMPLOYEE表,外键Dno引用Dnumber表中的DEPARTMENT。在DEPARTMENT表中,还有外键Mgr_ssn引用Ssn表中的EMPLOYEE

我使用

创建了表格
ALTER TABLE employee 
ADD foreign key (dno) references department(dnumber) 
    on delete restrict on update cascade;

(Dno和Mgr_ssn都不为空)

但现在我很困惑如何插入数据,因为它总是违反参照完整性约束,有什么建议吗?

谢谢:)

1 个答案:

答案 0 :(得分:0)

外键通常不会被赋予“not null”约束。如果有新员工没有被分配部门,您会怎么做?或者没有经理的新部门。

但是,对于您的问题,您应该使用Oracle约束的“ DEFERRABLE ”属性。这意味着,将仅在提交点检查任何约束。因此,您可以先插入dno和empnos,稍后再提交。此时,由于FK存在,因此不存在约束viokation。

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

- 为部门做同样的事情

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