Heim >Datenbank >MySQL-Tutorial >Wie lösche ich verknüpfte Daten in MySQL mithilfe von JOIN kaskadierend?

Wie lösche ich verknüpfte Daten in MySQL mithilfe von JOIN kaskadierend?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-20 16:56:09751Durchsuche

How to Cascade Delete Associated Data in MySQL Using JOIN?

JOIN-Löschung in MySQL: Zugehörige Daten löschen

In relationalen Datenbanken ist es normalerweise notwendig, Stammdaten und zugehörige Daten zu löschen. In MySQL können Sie die JOIN-Anweisung verwenden, um kaskadierende Löschvorgänge zu implementieren.

Frage:

Beachten Sie die folgende Tabellenstruktur:

<code class="language-sql">CREATE TABLE clients (
   client_id INT(11),
   PRIMARY KEY (client_id)
);
CREATE TABLE projects (
   project_id INT(11) UNSIGNED,
   client_id INT(11) UNSIGNED,
   PRIMARY KEY (project_id)
);
CREATE TABLE posts (
   post_id INT(11) UNSIGNED,
   project_id INT(11) UNSIGNED,
   PRIMARY KEY (post_id)
);</code>

Beim Löschen eines Kunden müssen alle zugehörigen Projekte und Beiträge nacheinander gelöscht werden. Der folgende PHP-Code ist jedoch nicht gültig:

<code class="language-sql">DELETE
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;</code>

Lösung:

Um mit einem gelöschten Kunden verknüpfte Beiträge erfolgreich zu löschen, müssen Sie angeben, dass Sie den Eintrag aus der Beitragstabelle löschen möchten:

<code class="language-sql">DELETE posts
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;</code>

Der geänderte Code löscht das Projekt und die zugehörigen Beiträge, wenn ein Kunde gelöscht wird.

Das obige ist der detaillierte Inhalt vonWie lösche ich verknüpfte Daten in MySQL mithilfe von JOIN kaskadierend?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn