Cascading löscht wie ON DELETE CASCADE für eine einmalige Operation in MySQL

Gibt es eine Art magische SQL-statement, um eine Zeile und alle ihre Abhängigkeiten zu löschen (durch Fremdschlüsseleinschränkungen verknüpft) OHNE die Tabelle zu ändern, um ON DELETE CASCADE hinzuzufügen oder jede abhängige Zeile manuell zu löschen?

Ich fantasiere etwas wie DELETE FROM `table_a` WHERE `id` = 1 ON DELETE CASCADE; aber ich kann nichts in diesem Dokument im Dokument finden @ http://dev.mysql.com/doc/refman/5.5/en/delete.html

  • Ich möchte die Tabelle nicht ändern, um die Einschränkungen nur für eine einmalige Operation zu ändern und sie dann mit einem anderen ALTER
  • Ich möchte etwas wie DELETE FROM `table_b` WHERE `a_id` = 1; nicht ausführen DELETE FROM `table_b` WHERE `a_id` = 1; für jede Tabelle, die einen FK zu table_a

MySQL 5.5 mit InnoDB verwenden

Solutions Collecting From Web of "Cascading löscht wie ON DELETE CASCADE für eine einmalige Operation in MySQL"

Nein, die einfache Antwort lautet: Nein, es gibt keine Abkürzung.

Entweder schreiben Sie DELETE statementen auf, um alle zugehörigen Zeilen in den zugehörigen Tabellen zu löschen, oder Sie haben Fremdschlüsseleinschränkungen mit ON DELETE CASCADE .

Beachten Sie, dass – solange in den Fremdschlüsselbeziehungen keine kreisförmigen Pfade vorhanden sind – eine einzelne DELETE statement verwendet werden kann, die aus mehreren Tabellen löscht:

 DELETE a, b, c, d FROM a LEFT JOIN b ON b.a_id = a.a_id LEFT JOIN c ON c.a_id = a.a_id LEFT JOIN d ON d.b_id = b.b_id WHERE a.a_id = 1 ;