SQL Оператор INSERT конфликтует с FOREIGN KEY

Во-первых, хочу отметить, что я новичок в этом.

У меня проблема со вставкой в ​​таблицу. Когда я пытаюсь запустить весь код сразу, возникает ошибка:

Msg 547, Level 16, State 0, Line 134 The INSERT statement conflicted with the FOREIGN KEY constraint "FK__Zwierze__Klatka___440B1D61". The conflict occurred in database "zoo2", table "dbo.Klatka", column 'ID_Klatka'.

Что я пробовал:

  1. Сначала создайте все таблицы, затем вставьте.

  2. Чтобы изменить порядок строк в запросе, но это не помогает

  3. Искать дубликаты, но безрезультатно.

Я пытаюсь около 3 часов и понятия не имею, что делать. Я знаю, что эту ошибку действительно легко понять, но даже это я не знаю, что делать.

Вы можете найти весь код ниже.

Пожалуйста, помогите мне с этим.

Спасибо заранее.

USE zoo2

Create Table Domena (
ID_Domena INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Nazwa_Domena varchar(80) NOT NULL,
)
Create Table Krolestwo (
ID_Krolestwo INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Nazwa_Krolestwo varchar(80) NOT NULL,
ID_Domena INT NOT NULL REFERENCES Domena(ID_Domena)
)
Create Table Typ (
ID_Typ INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Nazwa_Typ varchar(80) NOT NULL,
ID_Krolestwo INT NOT NULL REFERENCES Krolestwo(ID_Krolestwo)
)

Create Table Gromada (
ID_Gromada INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Nazwa_Rodzina varchar(80) NOT NULL,
ID_Typ INT NOT NULL REFERENCES Typ(ID_Typ)
)
Create Table Rzad (
ID_Rzad INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Nazwa_Rodzina varchar(80) NOT NULL,
ID_Gromada INT NOT NULL REFERENCES Gromada(ID_Gromada)
)
Create Table Rodzina (
ID_Rodzina INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Nazwa_Rodzina varchar(80) NOT NULL,
ID_Rzad INT NOT NULL REFERENCES Rzad(ID_Rzad)
)
Create Table Rodzaj (
ID_Rodzaj INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Nazwa_Rodzaj varchar(80) NOT NULL,
ID_Rodzina INT NOT NULL REFERENCES Rodzina(ID_Rodzina)
)

Create Table Gatunek (
ID_Gatunek INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Nazwa_Gatunek varchar(80) NOT NULL,
ID_Rodzaj INT NOT NULL REFERENCES Rodzaj(ID_Rodzaj),
Opis_Gatunek varchar(500)
) 

Create Table Strefa(
ID_Strefa INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Strefa char(1) NOT NULL
)

Create Table Klatka_Rozmiar(
ID_Klatka_Rozmiar INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Wysokosc INT NOT NULL,
Szerokosc INT NOT NULL,
Dlugosc INT NOT NULL
)

Create Table Pomieszczenie(
ID_Pomieszczenie INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Nr_Pomieszczenie INT NOT NULL,
ID_Strefa INT NOT NULL REFERENCES Strefa(ID_Strefa)
)

Create Table Klatka (
ID_Klatka INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
ID_Klatka_Rozmiar INT NOT NULL REFERENCES Klatka_Rozmiar(ID_Klatka_Rozmiar),
ID_Pomieszczenie INT NOT NULL REFERENCES Pomieszczenie(ID_Pomieszczenie),
) 

Create Table Zwierze (
ID_Zwierze INT NOT NULL IDENTITY (1,1) PRIMARY KEY,
Nazwa_Zwierze varchar(255) NOT NULL,
Klatka_ID INT NOT NULL REFERENCES Klatka(ID_Klatka),
Zwierze_ID_Domena INT NOT NULL REFERENCES Domena(ID_Domena),
Zwierze_ID_Krolestwo INT NOT NULL REFERENCES Krolestwo(ID_Krolestwo),
Zwierze_ID_Typ INT NOT NULL REFERENCES Typ(ID_Typ),
Zwierze_ID_Gromada INT NOT NULL REFERENCES Gromada(ID_Gromada),
Zwierze_ID_Rzad INT NOT NULL REFERENCES Rzad(ID_Rzad),
Zwierze_ID_Rodzina INT NOT NULL REFERENCES Rodzina(ID_Rodzina),
Zwierze_ID_Rodzaj INT NOT NULL REFERENCES Rodzaj(ID_Rodzaj),
Zwierze_ID_Gatunek INT NOT NULL REFERENCES Gatunek(ID_Gatunek)
)

--Koniec Tworzenie Tabel--


--Dodawanie wartości--

--Dodawanie domeny--
INSERT INTO Domena
VALUES ('Eukarionty');

--Dodawanie królestwa--
INSERT INTO Krolestwo
VALUES ('Zwierzeta', 1);

--Dodawanie typu--
INSERT INTO Typ
VALUES ('Miesny', 1),('Strunowce', 1);

--Dodawanie Gromady--
INSERT INTO Gromada
VALUES ('Ssaki', 1),('Kręgowce', 2);

--Dodawanie Rzędu--
INSERT INTO Rzad
VALUES ('Parzystokopytne', 1),('Sowy', 2);

--Dodawanie Rodziny--
INSERT INTO Rodzina
VALUES ('Wołowate', 1),('Ptaki', 2);

--Dodawanie Rodzaju--
INSERT INTO Rodzaj
VALUES ('Bydło', 1),('Ptactwo', 2);

--Dodawanie Gatunku--
INSERT INTO Gatunek
VALUES ('Tur europejski', 1, '*Taki niby byk*'),('Drapieżny', 2, '*Ptak drapieżny*');

--Dodawanie Strefy--
INSERT INTO Strefa
VALUES ('A'),('B'),('C')

--Dodawanie Pomieszczenia--
INSERT INTO Pomieszczenie
VALUES (1,1),(2,1),(3,2),(4,3),(5,3)

--Dodawanie Klatek_rozmiar--
INSERT INTO Klatka_Rozmiar
VALUES (100,100,100),(500,500,500),(7000,7000,7000)

--Dodawanie Zwierząt--
INSERT INTO Zwierze
VALUES ('Byk', 1, 1, 1, 1, 1, 1, 1, 1 ,1 )

Вы пытаетесь вставить значение, которого нет в указанной таблице. Вы пытаетесь вставить в Zwierze значение 1 для Klatka.ID_Klatka, которого не существует

Nilesh 14.06.2018 15:20

Да, как указал @Nilesh, ошибка довольно очевидна. Когда вы создаете таблицы с внешними ключами, вы заставляете ключи сохранять постоянство между таблицами. Итак, если у вас есть внешний ключ в таблице a с полем таблицы b, и вы пытаетесь вставить в таблицу a значение, которого нет в b, вы всегда будете получать эту ошибку. Вы должны сделать ваши инструкции вставки упорядочены, чтобы избежать этой проблемы

Jaime Drq 14.06.2018 15:36

Вы никогда ничего не вставляли в таблицу Klatka

SQLChao 14.06.2018 15:37

Боже мой .. Ребята огромное, огромное спасибо! Я не знаю почему, но вчера, после нескольких часов борьбы с этим, я случайно удалил всю таблицу вставок ... (чего я не заметил), я не ожидал никакого ответа, но теперь, когда я увидел 3 ответы, я был так счастлив. Спасибо вам, ребята!!!

kjkj3456 15.06.2018 06:56
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
4
89
0

Другие вопросы по теме