【发布时间】:2018-12-04 07:49:32
【问题描述】:
这些是我的表,它们是创建的,但是当我在 AMI 表中插入数据时,它给了我外键冲突错误。我知道在插入子表之前,父级应该具有该值。在这里,我的 AMI 表同时依赖于 household_income 和 location 并且两者都有数据。那么为什么我会收到错误消息:
Insert into AMI values('CONTROL','ZIP','PER','L30','L50','L80');
消息 547,级别 16,状态 0,第 1 行 INSERT 语句与 >FOREIGN KEY 约束“FK__AMI__7908F585”冲突。冲突发生在数据库 >“mydatabase_old”、表“dbo.household_income”中。 声明已终止。
create table admin
(control varchar(15),
status varchar(3),
weight float(24),
metro3 varchar(3),
PRIMARY KEY (control)
);
create table AMI
(control varchar(15),
zip varchar(8),
per VARCHAR(15),
L30 int,
L50 int,
L80 int,
PRIMARY KEY(zip, per),
foreign key (zip, control) references location on delete cascade,
foreign key (per, control) references household_income ON UPDATE NO ACTION
);
create table location
(region varchar(5),
control varchar(15),
zip varchar(8),
PRIMARY KEY(zip, control),
foreign key (control) references admin on delete cascade
);
create table household_income
(control varchar(15),
age1 int,
per varchar(15),
ownrent varchar(3),
totalsal float(24),
zinc2 float(24),
type varchar(15),
PRIMARY KEY(control, per),
foreign key (control) references admin on delete cascade,
foreign key (type, control) references structure ON UPDATE NO ACTION,
);
【问题讨论】:
-
您正在尝试在父表中插入数据之前将数据插入到子表中。当我们在架构上应用参照完整性时。您应该先将数据输入到父表中,然后再输入子表跨度>
-
据我了解,AMI 是我的子表, location 和 home_income 都是父表。即,family_income 具有控制权和 per...并且 location 具有控制权和 zip...然后我将该数据插入 AMI
标签: sql-server