3

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'.

2つのテーブルが利用可能です。

これは、テーブルを作成するために使用するコードです

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))
4

2 に答える 2

5

テーブルに存在しないINSERT値をテーブルに入力しようとすると、エラーが発生します。ArticulosFabricantes

Codigoフィールドに外部キーがあるため、 に同じ値が必要ですFabricantes

非動作デモを参照してください。このデモは、 の値がテーブルにCodigo存在しないことを示しているため、エラー メッセージがスローされます。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)
);

最初はArticulosテーブルにidentityセットがありましたが、そのフィールドを外部キーとして持っているので、そのテーブルに持つべきではないと思いますidentity

于 2012-10-04T19:23:34.113 に答える
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))
于 2012-10-04T20:10:01.397 に答える