我无法在网络上找到解决方案。我想知道如何在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