繁体   English   中英

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

[英]PSQL - how to insert data to the altered table?

我有一个EMPLOYEE与外键表Dno引用DnumberDEPARTMENT表。 DEPARTMENT表中,也有外键Mgr_ssn ,它引用EMPLOYEE表中的Ssn

我使用创建表

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

(Dno和Mgr_ssn都不为空)

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

谢谢 :)

通常不给外键“非空”约束。 如果有新员工尚未分配部门,您将怎么办。 或没有经理的新部门。

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

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

-对部门同样

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM