我無法在網絡上找到解決方案。我想知道如何在oracle中編寫遞歸關係。目前這是我得到的:什麼是oracle 11g中的遞歸關係的符號?
create table medewerkers
(medewerker_ID varchar(15) primary key,
naam varchar(50) not null,
adres varchar(50) not null,
telefoon_nummer varchar(10) not null,
salaris number(4) not null,
functie varchar(50) not null,
manager varchar(15) constraint FK_Manager references medewerkers (medewerker_ID) on delete cascade,
werknemer_winkel_nummer number(15) constraint FK_W_winkel references winkel (winkel_nummer) on delete cascade,
constraint check_salaris check (salaris < 3000)
);
此刻,我創建了一個經理列作爲此遞歸關係的FK。我沒有創建額外的表格,因爲我被告知,如果他們與員工是一對多的,那麼我可以將FK放在表格中。
現在我插入值,像這樣的:
insert into MEDEWERKERS (medewerker_id, naam, adres, telefoon_nummer, salaris, functie, werknemer_winkel_nummer, manager)
values(11159112, 'Joost', 'Eindhoven Langloopstraat 1', 0678765478, 1500, 'baliemedewerker', 10, 'nee');
Oracle數據庫提供了一個錯誤回:
SQL Error: ORA-02291: integrity constraint (MAXIME.FK_MANAGER) violated - parent key not found
02291. 00000 - "integrity constraint (%s.%s) violated - parent key not found"
*Cause: A foreign key value has no matching primary key value.
*Action: Delete the foreign key or add a matching primary key.
我怎麼否則應該得到的值到經理欄?
我希望我的問題不太含糊。
在插入具有'nee'作爲其管理者的行之前,你需要用'medewerker_ID' ='nee'插入該行。這就是外鍵約束強制執行的內容。如果您必須無序插入,您可以將約束條件設置爲「可延遲」。 – 2015-03-31 12:22:51
這正是我所期待的那種情況!非常感謝 – 2015-03-31 13:07:24