Veröffentlicht 13. Mai 201312 j 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);
13. Mai 201312 j 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.
13. Mai 201312 j Autor 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 201312 j von Waschmaschine
14. Mai 201312 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.