2 Stimmen

TV-Sendungen-Datenbank: Löschen Sie Sendungen, die Fremdschlüsselstaffeln haben

Ich baue ein Backpanel für meine TV-Serien-Website, ich habe 2 Tabellen. Eine namens Shows und die andere namens Seasons.

Struktur: Shows - show_id PK, show_title

Seasons - season_id PK, show_id (Fremdschlüssel), season

Ich liste alle Seriennamen in einer Tabelle im Backend mit einem Löschen-Button auf, jedoch wird die Show nicht gelöscht, wenn ich auf Löschen drücke, weil sie auch Seasons hat. Wenn ich versuche, eine Show zu löschen, die keine Seasons hat, wird sie ohne Probleme aus der Datenbank entfernt.

Mein Code sieht auf remove.php so aus:

$id=$_GET['id'];

// Show löschen
$sql="DELETE FROM shows WHERE shows_id='$id'";

$result=mysql_query($sql);

Ich vermute, dass ich auch die Seasons, die derselben Show zugewiesen sind, entfernen müsste, bin mir jedoch unsicher, wie ich das angehen soll.

1voto

web-nomad Punkte 5925
$id=$_GET['id'];

// Löschen Sie zunächst alle Staffeln für diese Show.
$sql="DELETE FROM seasons WHERE show_id='$id'";

// Jetzt Show löschen
$sql="DELETE FROM shows WHERE id='$id'";

1voto

Ryan Punkte 144

Wenn Sie InnoDB für Ihre MySQL-Tabelle verwenden, könnte es hier wirklich einfach für Sie sein, wenn Sie die Einschränkungen für Ihren Fremdschlüssel überprüfen / ändern.

Die Änderung dieser hängt davon ab, wie Sie es eingerichtet haben, ob Sie die Befehlszeilenschnittstelle oder eine GUI zur Verwaltung Ihrer db verwenden.

Aber als Sie das Fremdschlüsselfeld in Ihrer Saisonstabelle erstellt haben, haben Sie Einschränkungen festgelegt. Wenn Sie diese Einschränkung jetzt wie folgt aktualisieren:

Beim Aktualisieren: Nichts tun \\ Beim Löschen: Cascade

Jetzt wird jedes Mal, wenn Sie eine Zeile aus Shows löschen, werden alle zugehörigen Zeilen in der Saison automatisch gelöscht, aufgrund der Cascading-Regel. Sehr hilfreich und ein Muss für den Aufbau normalisierter Datenbanken.

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X