Vinnaren i pepparkakshustävlingen!
2013-03-12, 11:58
  #1
Medlem
Jag skapade denna tabell utan errors först:

Kod:
CREATE TABLE appointment (petID VARCHAR(11), employeeID VARCHAR(11), serviceID VARCHAR(11), appointmentID VARCHAR(11) not null, appointmentDate VARCHAR(55), 
	PRIMARY KEY (appointmentID),
	FOREIGN KEY (petID) REFERENCES pets (petID),
	FOREIGN KEY (employeeID) REFERENCES employees (employeeID),
	FOREIGN KEY (serviceID) REFERENCES service (serviceID));

Sedan försökte jag lägga in values i denna med hjälp av:

Kod:
INSERT INTO appointment (serviceID, petID, employeeID, appointmentDate) VALUES
('T2003', 'AC001-04', '3', '11/4/98'),
('M0500', 'AC001-04', '3', '11/4/98'),
('M0702', 'AC001-04', '3', '11/4/98'),
('T0404', 'AC001-04', '3', '11/4/98'),
('T0408', 'AC001-04', '3', '11/4/98');

Men när jag försöker inserta värderna så får jag detta error:

#1452 - Cannot add or update a child row: a foreign key constraint fails (`moment2`.`appointment`, CONSTRAINT `appointment_ibfk_3` FOREIGN KEY (`serviceID`) REFERENCES `service` (`serviceID`))

Hjälp?
Citera
2013-03-12, 12:20
  #2
Medlem
kh31d4rs avatar
Du försöker referera till en Key som inte finns?
Citera
2013-03-12, 12:27
  #3
Moderator
Protons avatar
Ser ut som om det går åt skogen för att du inte har nånting i din servicetabell som har id 3, då kommer du inte kunna stoppa i nåt i tabellen.

Se till att den finns på plats först så lär det kunna funka bättre, iaf tills du träffar på nästa constraint.
Citera
2013-03-12, 12:36
  #4
Medlem
Citat:
Ursprungligen postat av HerbsandInk
Hjälp?
Förstår du innebörden av foreign keys?

Kolla tabellen service, i kolumnen serviceID.
Där saknas någon av de serviceID du försöker stoppa in i appointment.
Citera
2013-03-12, 14:46
  #5
Medlem
Citat:
Ursprungligen postat av Proton
Ser ut som om det går åt skogen för att du inte har nånting i din servicetabell som har id 3, då kommer du inte kunna stoppa i nåt i tabellen.

Se till att den finns på plats först så lär det kunna funka bättre, iaf tills du träffar på nästa constraint.

Trean i queryn är employeeID och den är ju foreign key från tabellen employees och ID 3 finns i den, eller hur menar du?
Citera
2013-03-12, 14:49
  #6
Medlem
Citat:
Ursprungligen postat av mayotteiru
Förstår du innebörden av foreign keys?

Kolla tabellen service, i kolumnen serviceID.
Där saknas någon av de serviceID du försöker stoppa in i appointment.

FAIL hade visst glömt att inserta värdena till tabellen serviceID, har den queryn klar men hade visst glömt använda den.
Citera
2013-03-12, 17:11
  #7
Moderator
Protons avatar
Citat:
Ursprungligen postat av HerbsandInk
Trean i queryn är employeeID och den är ju foreign key från tabellen employees och ID 3 finns i den, eller hur menar du?
Kolla på felmeddelandet.

Finns det där någon referens till employeetabellen? Svar nej.
Har jag sagt något om någon employeetabell? Svar nej.
Finns det i felmeddelandet en referens till tabellen service? Svar ja.
Sa jag något om tabellen service? Svar ja.

För övrigt lär tabellen heta service enligt felmeddelandet och inte serviceID.

Nu har du ju dock lyckats lista ut vad som var galet. Bra så långt.
Citera
2013-03-12, 18:01
  #8
Medlem
John-Pauls avatar
Tips:
Du kanske ska namnge dina constraints så att dom ger en vägledning till vad är så blir det tydligare. Namnet `appointment_ibfk_3`eller väl inte direkt tydligt (om nu inte ibfk_3 mot förmodan är en akronym med klar innebörd)
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback