Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SQL Fragen (alter, on delete cascade)

Empfohlene Antworten

Veröffentlicht

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);

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.

  • 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 von Waschmaschine

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.