create table depart
(dno char(9) primary key
check (dno between 3001 and 3003),
dname char(10),
daddr char(10)
);create table job
(jno char(9) primary key check(jno in('2001','2004','2007','2008')),
jname char(10),
jdesc char(50)
);create table staff
(sno char(9) primary key,
sname char(10),
ssex char(2),
semail char(15),
stel char(12),
swage int,
spos char(10),
sdept char(20),
foreign key(sdept) references depart(dno),
foreign key(spos) references job(jno)
);
这是我创建的三个表,当job,depart表建立完毕后(即插入完数据后),
在向staff插入数据
insert
into staff
values('0003','赵克佳','女','[email protected]','0411-546891',2400,'2007','3003');时,出现如下问题:
SQL> insert
2 into staff
3 values('0003','赵克佳','女','[email protected]','0411-546891',2400,'2007','3003');
insert
*
第 1 行出现错误:
ORA-02291: 违反完整约束条件 (SYSTEM.SYS_C005285) - 未找到父项关键字
我这里只有两个约束条件,且填入的数据都是符合的呀!!!
怎么回事???
请教!!!
'3003'在depart这个表
都是否有相关数据.
在你的depart 表里面dno char(9) 而在staff表里面是sdept char(20), dno和sdept都是char类型,但是一个是20个字符,一个是9个字符
改为sdept char(9),spos char(9) 应该就可以了
create table staff
(sno char(9) primary key,
sname char(10),
ssex char(2),
semail char(15),
stel char(12),
swage int,
spos char(9),
sdept char(9),
foreign key(sdept) references depart(dno),
foreign key(spos) references job(jno)
); 把你原来建的表删了 然后重新建一下!