0

テーブルで参照するEMPLOYEE外部キーを持つテーブルがあります。テーブルには、テーブル内で参照する外部キーもあります。DnoDnumberDEPARTMENTDEPARTMENTMgr_ssnSsnEMPLOYEE

を使用してテーブルを作成しました

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

(Dno と Mgr_ssn はどちらも NOT NULL)

しかし、参照整合性制約に常に違反しているため、データを挿入する方法が混乱しています。何か提案はありますか?

ありがとうございました :)

4

1 に答える 1

0

通常、外部キーには「not null」制約は与えられません。部署に配属されていない新入社員がいたらどうしますか。またはマネージャーのいない新しい部門。

それでも、問題に対しては、Oracle Constraintsの「 DEFERRABLE 」プロパティを使用する必要があります。これは、すべての制約がコミット ポイントでのみチェックされることを意味します。したがって、最初に dno と empnos を挿入し、後でコミットできます。この時点では、FK が存在するため、制約違反はありません。

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

-- dept についても同じことを行います。

それで、 Insert into emp (...) insert into dept(...) commit;

于 2013-05-18T20:12:48.430 に答える