Home » How To » Mengatasi Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails Pada MySQL

Mengatasi Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails Pada MySQL

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Error Code: 1452. Cannot add or update a child row: a foreign key constraint merupakan artian dari ketika kita melakukan join dan ingin menambahkan baris pada tabel anak yang tidak ada barisnya pada tabel induk, yang artinya kita harus menambahkan baris terlebih dahulu pada tabel induk baru ke tabel anak.

Di bawah ini ada contoh kasus yang menampilkan Error Code: 1452 :

Tabel Ordre:

CREATE TABLE Ordre (
  OrdreID   INT NOT NULL,
  OrdreDato DATE DEFAULT NULL,
  KundeID   INT  DEFAULT NULL,
  CONSTRAINT Ordre_pk PRIMARY KEY (OrdreID),
  CONSTRAINT Ordre_fk FOREIGN KEY (KundeID) REFERENCES Kunde (KundeID)
)
  ENGINE = InnoDB;

Tabel Produkt :

CREATE TABLE Produkt (
  ProduktID          INT NOT NULL,
  ProduktBeskrivelse VARCHAR(100) DEFAULT NULL,
  ProduktFarge       VARCHAR(20)  DEFAULT NULL,
  Enhetpris          INT          DEFAULT NULL,
  CONSTRAINT Produkt_pk PRIMARY KEY (ProduktID)
)
  ENGINE = InnoDB;

Tabel Ordrelinje :

CREATE TABLE Ordrelinje (
  Ordre         INT NOT NULL,
  Produkt       INT NOT NULL,
  AntallBestilt INT DEFAULT NULL,
  CONSTRAINT Ordrelinje_pk PRIMARY KEY (Ordre, Produkt),
  CONSTRAINT Ordrelinje_fk FOREIGN KEY (Ordre) REFERENCES Ordre (OrdreID),
  CONSTRAINT Ordrelinje_fk1 FOREIGN KEY (Produkt) REFERENCES Produkt (ProduktID)
)
  ENGINE = InnoDB;

Masalah : Ketika kita akan memasukkan nilai ke dalam Tabel Ordrelinje, maka kita akan mendapatkan Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (srdjank.Ordrelinje, CONSTRAINT Ordrelinje_fk FOREIGN KEY (Ordre) REFERENCES Ordre (OrdreID))

Solusi :

Mengutip pernyataan mengenai FOREIGN KEY Constraints : Foreign key relationships melibatkan tabel induk yang menyimpan nilai data pusat dan tabel anak dengan nilai identik yang menunjuk kembali ke induknya. Klausa FOREIGN KEY ditentukan dalam tabel anak. Hal ini akan menolak setiap operasi INSERT atau UPDATE yang mencoba untuk membuat nilai Foreign key dalam tabel anak jika tidak ada nilai kunci kandidat yang cocok dalam tabel induk.

Jadi, kita harus memasukkan nilai terlebih dahulu ke dalam Tabel Ordre baru kita bisa memasukkan nilai ke dalam Tabel Ordrelinje. Hal ini merupakan aturan dasar ketika memiliki dua tabel yang saling berhubungan dan tidak bisa di balik terlebih dahulu, karena Tabel Ordre adalah tabel induk dan Tabel Ordrelinje adalah tabel anak. Sederhananya jika anak-anak memiliki id orang tua yang ditentukan, orang tua juga harus memilikinya.

You may also like