为什么我会收到外键约束错误

时间:2012-10-04 19:17:31

标签: sql sql-server sql-server-2012

我正在尝试使用sql server 2012在表中插入值,但是我有这个错误:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Fabricante". 
The conflict occurred in database 
"practica", table "dbo.Fabricantes", column 'Codigo'.

我只有两张桌子。

这是我用来创建表的代码

create table Fabricantes(
Codigo int identity primary key,
Nombre nvarchar (100) not null)

create table Articulos(
Codigo int identity primary key,
Nombre nvarchar (100) not null,
Precio int,
Fabricante int,
constraint FK_Fabricante foreign key
(Codigo) references Fabricantes (Codigo))

2 个答案:

答案 0 :(得分:5)

如果您尝试INSERT Articulos表中Fabricantes表中不存在的值Codigo,那么您将收到错误。

由于Fabricantes字段上有外键,因此您必须在Codigo中使用相同的值。

查看non-working demo。此演示显示Fabricantes表中不存在create table Fabricantes ( Codigo int identity primary key, Nombre nvarchar (100) not null ); create table Articulos ( Codigo int primary key, Nombre nvarchar (100) not null, Precio int, Fabricante int, constraint FK_Fabricante foreign key (Codigo) references Fabricantes (Codigo) ); 的值,因此它会抛出错误消息。这是一个working demo,表示该值首先出现在表格中。

我认为无论如何你需要重做表格。

Articulos

您最初拥有identity表并设置了identity,但由于您将该字段作为外键,我认为您不应该使用{{1}}表

答案 1 :(得分:0)

我认为你的错误是错误的外键。根据表格的外观,您应该将Articulo.Fabricante引用到Fabricante.Codigo,如下所示:

create table Fabricantes(
Codigo int identity primary key,
Nombre nvarchar (100) not null)

create table Articulos(
Codigo int identity primary key,
Nombre nvarchar (100) not null,
Precio int,
Fabricante int,
constraint FK_Fabricante foreign key
(Fabricante) references Fabricantes (Codigo))