Ich habe ein Problem, das mich verrückt macht. Ich suchte im Internet, aber alles, was ich finden konnte, war: Die Daten, auf die der Fremdschlüssel verweist, werden nicht eingefügt. Nun, ich habe es 100 mal überprüft, sie sind eingefügt.Fehlercode: 1452 auf UPDATE MySQL
Meine Tabellen sind:
Stundenanfrage:
CREATE TABLE IF NOT EXISTS Stundenanfrage(
LehrerKuerzel CHAR(10),
Anfangszeit TIMESTAMP,
Endzeit TIMESTAMP,
StundeGehalten TINYINT,
Akzeptiert TINYINT,
Lernprozess TEXT,
Sterne INT, -- 1-5 1 schlecht; 5 gut
BetrauNr INT REFERENCES ILB_Betrauung(BetrauNr),
PRIMARY KEY(LehrerKuerzel, Anfangszeit, Endzeit, BetrauNr),
FOREIGN KEY(LehrerKuerzel, Anfangszeit, Endzeit) REFERENCES Lehrerzeiten(LehrerKuerzel, Anfangszeit, Endzeit)
);
Lehrerzeiten:
CREATE TABLE IF NOT EXISTS Lehrerzeiten(
LehrerKuerzel CHAR(10) REFERENCES ILB_Lehrer,
Anfangszeit TIMESTAMP ,
Endzeit TIMESTAMP ,
Einzelunterricht TINYINT(1) DEFAULT 0,
Thema VARCHAR(100),
PRIMARY KEY(LehrerKuerzel, Anfangszeit, Endzeit)
);
Und ilb_betrauung:
CREATE TABLE IF NOT EXISTS ILB_Betrauung(
BetrauNr INT PRIMARY KEY AUTO_INCREMENT,
LehrerKuerzel CHAR(10) REFERENCES ilb_lehrer,
MatNr CHAR(20) REFERENCES fw_schueler,
zweckmaeßig_erachtet_Lehrer TINYINT,
zweckmaeßig_erachtet_Schueler TINYINT,
Betrauung_AV TINYINT,
Eltern_informiert TINYINT
);
Die Daten eingefügt:
Meine Update-Abfrage sieht wie folgt aus:
UPDATE stundenanfrage SET Akzeptiert = 1
WHERE LehrerKuerzel = "bb" AND Anfangszeit = "2017-02-20 12:20:00" AND
Endzeit = "2017-02-20 13:00:00";
und warf einen Fehler:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`db_ilb`.`stundenanfrage`, CONSTRAINT `stundenanfrage_ibfk_1` FOREIGN KEY (`LehrerKuerzel`, `Anfangszeit`, `Endzeit`) REFERENCES `lehrerzeiten` (`LehrerKuerzel`, `Anfangszeit`, `Endzeit`)
Ich trat auch alle Tabellen und ausgewählt, dass bestimmte Platte, die ich aktualisieren wollte:
SELECT * FROM stundenanfrage s
JOIN lehrerzeiten l ON s.Lehrerkuerzel = l.Lehrerkuerzel AND s.Anfangszeit =
l.Anfangszeit AND s.Endzeit = l.Endzeit
WHERE l.LehrerKuerzel = "bb" AND l.Anfangszeit = "2017-02-20 12:20:00" AND
l.Endzeit = "2017-02-20 13:00:00" AND s.BetrauNr = 1;
Die Ausgabe war jener Datensatz, den ich aktualisieren wollte. Ich fragte meine Lehrerin auch nach diesem Fehler und sie hatte auch keine Ahnung.
Remove Einschränkung zuerst, dann aktualisieren, nach dem Update Einschränkung –
@SinghKailash schaffen, was der Punkt ist ein Zwang, wenn Sie es entfernen, bevor Sie eine Änderung vornehmen? Ganz zu schweigen von der Tatsache, dass das Entfernen und Wiederherstellen einer Einschränkung auf einem großen Tisch ziemlich viel Zeit in Anspruch nehmen kann. Also, das ist ein sehr schlechter, sogar schädlicher Vorschlag! – Shadow
Vielleicht haben Sie Trigger auf dieser Tabelle und es ändert sich einige Werte bei der Aktualisierung? Dieser Fehler ergibt sonst keinen Sinn. –