Sven Rautenberg: DELETE über unbekannt viele Tabellen hinweg...?

Beitrag lesen

Moin!

Folgende SQL-Query ist das bisherige Ergebnis meiner Bemühungen, die ohne Fehlermeldung vom MySQL-Server akzeptiert wird, aber leider keine tatsächlichen Löschungen vornimmt:

DELETE benutzer., buchungen., dozenten., personen.

FROM benutzer, buchungen, dozenten, personen
WHERE personen.PersonenID='2';

  
"For the multiple-table syntax, DELETE deletes from each tbl\_name the rows that satisfy the conditions."  
  
Deine Bedingung: personen.PersonenID = 2.  
  
Für welche Zeilen in den Tabellen != "personen" trifft das zu?  
  
Abgesehen davon: Multi-Tabellen-Delete ist offenbar anspruchsvoller. Warum gehst du direkt in die "vollen" mit der Maximalzahl an Tabellen, anstatt erstmal den einfachsten Multi-Case zu testen mit ZWEI?  
  

> \* Wie notiere ich die WHERE-Klausel, wenn ich die exakte Anzahl der betroffenen Tabellen nicht "kenne" (zumindest nicht innerhalb derselben SQL-Query)? In meinem PHP-Script speichere ich mit einer gesonderten Anfrage (siehe zweites SQL-Beispiel oben) die Namen der betroffenen Tabellen in einem Array, um dann den eben genannten DELETE per Script zusammenzusetzen...  
  
Das ist so. Alles, was du per Query abfragen kannst, sind Daten. Tabellennamen sind keine Daten. Es gibt keine Möglichkeit, aus Daten direkt im Query Tabellennamen zu machen, das muss eine abfragende Instanz schon selbst regeln.  
  

> \* Ist mein Ansinnen überhaupt mittels einer einzigen SQL-Query lösbar, oder muss ich das tatsächlich doch "ausprogrammieren"?  
  
Ausprogrammieren. Und insofern ist der Ansatz mit Single-Table-Delete nicht schlechter, als ein Multi-Table-Delete.  
  
 - Sven Rautenberg