MySQL MariaDB

MySQL DELETE CASCADE

MySQL DELETE CASCADE
Unter MySQL wird die Anweisung ON DELETE CASCADE verwendet, um implizit entsprechende Zeilen aus der untergeordneten Tabelle zu entfernen, wenn Zeilen aus der übergeordneten Tabelle entfernt werden. Dies ist eine relative Art von kontextbezogenem Verhalten im Zusammenhang mit Fremdschlüsseln.

Angenommen, Sie haben zwei Tabellen mit einem FOREIGN KEY innerhalb einer Fremdschlüsselbeziehung erzeugt, die eine Eltern- und eine Kindtabelle rendern. Danach sollte ein für einen FOREIGN KEY vorgesehener für einen anderen festgelegt werden, um während der Kaskadierungsaktivitäten erfolgreich zu sein, dann geben wir eine ON DELETE CASCADE-Anweisung an. Wenn eine einzelne FOREIGN KEY-Anweisung die ON DELETE CASCADE bestimmt, lösen die kaskadierenden Funktionen möglicherweise eine Ausnahme aus.

Lassen Sie uns begreifen, wie wir in der gesamten MySQL-Tabelle die Anweisung ON DELETE CASCADE verwenden können.

Sie müssen die kürzlich installierte MySQL-Befehlszeilen-Client-Shell öffnen, um mit der Arbeit fortzufahren. Beim Öffnen werden Sie aufgefordert, Ihr Passwort einzugeben, um die MySQL-Befehlszeilen-Client-Shell weiter verwenden zu können, wie unten angehängt.

Als Nächstes erstellen wir zwei Tabellen namens „order“ und „customer“. Beide gemeinsamen Tabellen sind über einen Fremdschlüssel mit der Löschkaskadenfunktion verbunden. Eine „Bestellung“ ist an dieser Stelle die übergeordnete Tabelle und die untergeordnete Tabelle ist der „Kunde“. Mit den beiliegenden Skripten müssen Sie zusammen mit den entsprechenden Datensätzen beide Tabellen erstellen. Verwenden Sie den unten stehenden Befehl "Verwenden", um die Datenbank auszuwählen, in der Sie arbeiten möchten, oder erstellen Sie Tabellen darin. Hier ist „data“ die Datenbank, die wir verwenden.

>> Daten verwenden;

Übergeordnete Tabelle erstellen:

Zunächst müssen Sie die Tabelle „order“ mit ihren Feldern mit dem Befehl CREATE TABLE erstellen, wie in der folgenden Abfrage gezeigt. Die Spalte „ID“ wird in der nächsten Tabelle „Kunde“ als Fremdschlüssel verwendet.

>> TABLE-Daten ERSTELLEN.order ( ID INT PRIMARY KEY AUTO_INCREMENT NOT NULL, Artikel VARCHAR(50) NOT NULL, Preis VARCHAR(50) NOT NULL);

Fügen wir dieser Tabelle einige Daten hinzu. Sie müssen die unten gezeigten Abfragen in der MySQL-Befehlszeilen-Shell ausführen und jeden Befehl einzeln in der Befehlszeile ausführen oder einfach alle Befehle in der Befehlszeile in einem einzigen Schritt hinzufügen. Sie können auch die MySQL Workbench-GUI verwenden, um Daten zur Tabelle hinzuzufügen.

Lassen Sie uns nun die Tabelle "Reihenfolge" überprüfen, nachdem wir Werte eingegeben haben. Dazu können Sie den SELECT-Befehl wie folgt verwenden:

>> AUSWÄHLEN * AUS Daten.Auftrag;

Sie können sehen, dass die Daten wie erwartet erfolgreich in der Tabelle „Bestellung“ gespeichert wurden.

Untergeordnete Tabelle mit DELETE Cascade erstellen:

Jetzt ist es an der Reihe, eine weitere Tabelle namens „Kunde“ zu erstellen.

Zuerst müssen Sie das Schlüsselwort „CREATE“ zusammen mit dem Tabellennamen eingeben. Dann müssen Sie Feld- oder Spaltennamen zusammen mit ihren Datentypen hinzufügen. Sie müssen die letzte Spalte, die in dieser Tabelle als Fremdschlüssel verwendet wird, so benennen, wie Sie sie in der vorherigen Tabelle benannt haben. Wie Sie wissen, wurde die Spalte „ID“ aus der Tabelle „order“ als Fremdschlüssel in der Tabelle „customer“ als „OrderID“ verwendet. Danach müssen Sie das Schlüsselwort „CONSTRAINT“ hinzufügen, mit dem der FOREIGN-Schlüssel initialisiert wird, zusammen mit der Referenz der vorherigen Tabelle. Jetzt müssen Sie die Anweisung „DELETE CASCADE“ zusammen mit dem Schlüsselwort „ON“ verwenden.

>> TABLE-Daten ERSTELLEN.customer(CustID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,Name VARCHAR(45) NOT NULL,OrderID INT NOT NULL,CONSTRAINT order_id_fk FOREIGN KEY(OrderID) REFERENCES data.order(ID)ON DELETE CASCADE);

Nachdem die Tabelle erstellt wurde und DELETE CASCADE erfolgreich auf diese Tabelle angewendet wurde, ist es an der Zeit, einige Werte in diese Tabelle einzufügen. Probieren Sie die folgenden Anweisungen nacheinander in der MySQL-Befehlszeilen-Client-Shell aus, um dies zu tun.

Führen Sie anschließend das Einfügen von Abfragen durch. Es ist ein Punkt, die Tabelle zu überprüfen, ob die Daten erfolgreich hinzugefügt wurden oder nicht. Versuchen Sie also den folgenden Befehl, um dies zu tun:

>> AUSWÄHLEN * AUS Daten.Kunde;

Hier können Sie in der Tabellenausgabe einen Blick darauf werfen, dass die Daten effizient und fehlerfrei zugeordnet werden.

Datensätze löschen:

Wenn Sie nun Daten oder Zeilen aus der übergeordneten Tabelle löschen, werden aufgrund der aktivierten DELETE CASCADE für den in der untergeordneten Tabelle erwähnten Fremdschlüssel auch die Daten oder die Zeile aus der untergeordneten Tabelle gelöscht. Versuchen wir zuerst die DELETE-Abfrage und überprüfen Sie dann die Ergebnisse check. Wir werden die Daten aus der Tabelle „Bestellung“ löschen, wobei die „ID“ „11“ ist. Wenn die gleiche „ID“ in der Tabelle „Kunde“ in der Fremdschlüssel-Spalte „Auftrags-ID“ gefunden wird, werden auch die entsprechenden Zeilen oder Daten in der Tabelle „Kunde“ gelöscht. Versuchen Sie dazu den folgenden Befehl in der Befehlszeile:

>> AUS Daten LÖSCHEN. bestellen WHERE ID = '11';

Sehen wir uns zuerst die übergeordnete Tabelle an. Geben Sie dann den untenstehenden SELECT-Befehl ein, um die verbleibenden Datensätze der Tabelle „Reihenfolge“ nach dem Löschen einiger Datensätze abzurufen deletion. Sie werden sehen, dass der Datensatz der Tabelle, bei der die „ID“ „11“ war, erfolgreich aus dieser Tabelle gelöscht wurde. Dies bedeutet, dass die relativen Datensätze mit demselben ID-Wert „11“ auch aus der untergeordneten Tabelle gelöscht werden.

>> AUSWÄHLEN * AUS Daten.Auftrag;

Das Abrufen der Datensätze der untergeordneten Tabelle mit dem SELECT-Befehl ist so einfach wie zuvor. Probieren Sie einfach den folgenden Befehl aus und Sie erhalten die Ergebnisse.

Wenn Sie die Ergebnisse erhalten, können Sie sehen, dass der Datensatz von „CustID“ mit dem Wert „1“ vollständig gelöscht wurde. Dies liegt daran, dass die Spalte „OrderID“ in ihrer ersten Zeile den Wert „11“ hat, was zum Löschen dieser Zeile führt.

>> AUSWÄHLEN * AUS Daten.Kunde;

Wenn Sie versuchen, die übergeordnete Tabelle mit dem DROP-Befehl zu löschen, wird MySQL Sie daran hindern. Dies liegt daran, dass die übergeordnete Tabelle DELETE CASCADE aktiviert hat enabled. Um die Tabelle zu löschen, müssen Sie zuerst die DELETE CASCADE entfernen remove.

Fazit:

Wir haben mit der Erklärung von DELETE CASCADE in MySQL fertig. Um es klarer zu machen, probieren Sie weitere Beispiele an Ihrem Ende aus.

Beste Gamepad-Mapping-Apps für Linux
Wenn du Spiele unter Linux gerne mit einem Gamepad statt mit einem typischen Tastatur- und Maus-Eingabesystem spielst, gibt es einige nützliche Apps f...
Nützliche Tools für Linux-Spieler
Wenn Sie gerne unter Linux spielen, haben Sie wahrscheinlich Apps und Dienstprogramme wie Wine, Lutris und OBS Studio verwendet, um das Spielerlebnis ...
HD-Remastered-Spiele für Linux, die noch nie zuvor eine Linux-Version hatten
Viele Spieleentwickler und -herausgeber entwickeln HD-Remaster alter Spiele, um die Lebensdauer des Franchise zu verlängern. Bitte Fans, die Kompatibi...