Waschmaschine Geschrieben 13. Mai 2013 Geschrieben 13. Mai 2013 Sagen wir mal ich habe eine Tabelle.... wie kann ich nun nachträglich kunden_id als Primärschlüssel "altern"? und was genau macht on delete cascade? Dass mysql nicht rummeckert, wenn ich eins der beiden einträge in der unteren tabelle lösche? Sprich, er würde dann alle mit herr bzw frau in der kunden tabelle löschen? CREATE TABLE kunden( kunden_id (int 100) AUTO_INCREMENT, <--- hier primary key vergessen name varchar(30), vorname varchar(30), anrede varchar (5) FOREIGN KEY REFERENCES anrede(anrede_id) ON DELETE CASCADE <--? ); CREATE TABLE anrede( anrede_id bool PRIMARY KEY, anrede varchar(5) ); insert into anrede (anrede_id, anrede) values (0, 'herr'); insert into anrede (anrede_id, anrede) values (1, 'frau'); insert into kunden (name, vorname, anrede) values ('mueller', 'andreas', 0); Zitieren
rny Geschrieben 13. Mai 2013 Geschrieben 13. Mai 2013 In MySQL dürfte das sollte das so gehen (wenn noch kein primary key existiert, ansonsten "DROP PRIMARY KEY" vorher): ALTER TABLE kunden ADD PRIMARY KEY(kunden_id); Mit "on delete cascade" werden beim Löschen einer Zeile der Elterntabelle, die damit verbundenen Zeilen der Kindtabelle auch gelöscht. Zitieren
Waschmaschine Geschrieben 13. Mai 2013 Autor Geschrieben 13. Mai 2013 (bearbeitet) hätte es nun so gemacht ALTER TABLE kunden MODIFY kunden_id ADD PRIMARY KEY (kunden_id); meinste das geht so auch? In MySQL dürfte das sollte das so gehen (wenn noch kein primary key existiert, ansonsten "DROP PRIMARY KEY" vorher): ALTER TABLE kunden ADD PRIMARY KEY(kunden_id); Mit "on delete cascade" werden beim Löschen einer Zeile der Elterntabelle, die damit verbundenen Zeilen der Kindtabelle auch gelöscht. jo wenn ich nun delete from anrede where anrede like "frau" or where anrede_id = 1; mache würden nun in der kundentabellle alle frauen gelöscht werden? Bearbeitet 13. Mai 2013 von Waschmaschine Zitieren
rny Geschrieben 14. Mai 2013 Geschrieben 14. Mai 2013 Mit modify sollte das auch gehen, sieht dann aber eher so aus: ALTER TABLE kunden MODIFY kunden_id PRIMARY KEY Zu on delete cascade: Das hängt natürlich davon ab in welche Richtung referenziert wird, aber ja (auch wenn es an der Stelle vielleicht nicht unbedingt sinnvoll ist). Gutes Beispiel bei Wikipedia: Die Tabelle "Prüfung" hat als Foreign Key die Id der Tabelle Student. Wenn der Student gelöscht wird, gibts auch die Prüfung für diesen Student nicht mehr. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.