INSERT INTO bei Beziehungen

EddieG

Erfahrenes Mitglied
Hi,
Ich habe mir eine Datenbank erstellt und teste halt alles, was mir nur einfällt. Nun hänge ich an dem Punkt wenn ich einen Insert machen möchte durch die komplette Palette.
Hier mein DB Aufbau
v7fhlqvz.png

Hier mein Versuch
Code:
INSERT INTO
 (student.MatNr,student.Name,student_semester.semester_id,student_info.kurs_id,note.note)
 VALUES
 (1234,'test',5,45613,1)

Fehler lautet
Code:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(student.MatNr,student.Name,student_semester.semester_id,student_info.kurs_id,no' at line 1
 
Zuletzt bearbeitet:
Das funktioniert so meines Wissens nicht.
SQL:
INSERT INTO tabelle1 (feld1, feld2, feld3...feld_n) VALUES('value1', 'value2', 'value3'...'value_n');
 
Ich habe es nun so versucht, leider selber Fehler

SQL:
INSERT INTO student,
student_semester,
student_info,
note
(
student.MatNr,student.Name,
student_semester.student_id,student_semester.semester_id,
student_info.student_id,student_info.semester_id,student_info.kurs_id,
note.student_id,note.semester_id,note.kurs_id,note.note
)
 VALUES 
(
1234,"test2",
1234,5,
1234,5,678,
1234,5,678,1
)

Müsste ich nicht aufgrund der Relation zwischen den Tabellen bzw. weil ich es in der 3.NF gemacht habe nur einmal wo eintragen und die Fremdschlüssel sich automatisch dann eintragen.
Ich meine, wenn ich die Einträge eh immer dopelt eintragen muss, kann ich es auch gleich ohne Relationen machen.

Als ich die Inserts auf die Klassische art gemacht habe also pro Tabelle eine Insert Zeile hat es funktioniert.
Wenn ich dies nun wieder rückgängig machen möchte, also Datensatz löschen bekomme ich die Meldung, dass es nicht erlaubt sei wegen dem Fremdschlüssel

MySQL meldet: Dokumentation
#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`db_klausur`.`note`, CONSTRAINT `note_ibfk_3` FOREIGN KEY (`Kurs_id`) REFERENCES `student_info` (`Kurs_id`))
 
Zuletzt bearbeitet:
Zum löschen kannst du ON DELETE CASCADE verwenden.
Bei INSERT musst in jede Tabelle einzeln einfügen. Trotzdem würde ich die Datenbank in der 3. NF lassen, der Vorteil ist dort klar beim UPDATE zu finden.
 
Zurück