1
create table  s38
(
 sno number(5) primary key,
 sname varchar(10),
 city varchar(10)
);
create table  p38
(
 pno number(5) primary key,
 pname varchar(10),
 color varchar(10)
);
create table  j38
(
 jno number(5) primary key,
 jname varchar(10),
 city varchar(10)
);
create table spj38
(
 primary key (sno,pno,jno) ,
 qty number(5),
  sno references s38(sno),
 pno references p38(pno) ,
 jno references j38(jno)   
);

table data:
s38:
1 ayush patiala
2 pankaj indore

p38:
1 nut gray
2 hammer black

j38:
1 mining bhopal
2 super pune
 spj38:
1,1,1,100

我已经创建了这四个表,但是当我将数据插入 spj38 时,它显示父键冲突错误,为什么?我一直保持外键约束。

4

1 回答 1

0

主键违规的唯一原因是您在主键列中添加了相同的值。在您的情况下sno, pno, jno是复合键

此外,当您在表上应用外键约束时,您添加的键必须存在于父表中,因此您尝试在插入查询中添加的值必须存在于父表中。

在表中添加 1,1,1,100 后,您将无法再次添加相同的复合键,在您的情况下为 1,1,100。

希望这可以帮助

于 2013-01-18T10:20:26.713 回答