PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : delete



joey.brunner
14-01-2003, 10:36
Hi,

wie kann ich bei mysql alle eintraege aller tabellen in einer datenbank loeschen. also eine art delete * from *?

danke

joey

Christoph
14-01-2003, 11:05
Lass bei DELETE einfach die WHERE Klausel weg.

Andere Alternative bei vielen DB's ist TRUNCATE TABLE
(Unterschied zu DELETE: erfolgt nicht in Transaktion).

joey.brunner
14-01-2003, 11:16
ja schon, aber dann kann cih ja nur eine tabelle loeschen, ich moechte alle loeschen und ein delete from * geht ja nicht

joey

Christoph
14-01-2003, 13:12
Das geht nicht mit SQL, sondern nur mit einer prozeduralen Erweiterung,
z.B. PL/SQL (Oracle) oder PL/pgSQL (Postgres). MySQL hat sowas nicht.

Schreibe Dir einfach eine stored Procedure, die folgendes macht:
- alle Tabellennamen aus dem Systemcatalog auslesen (ggf. über
reguläre Ausdrücke beschränken, d.h. mit dem Operator SIMILAR)
- in einer Loop über die Tabellennamen eine DELETE FROM tblname
ausführen mittels EXECUTE (Postgres) bzw. EXECUTE IMMEDIATE (Oracle)

Zeitaufwand unter einer halben Stunde.

elrond
14-01-2003, 15:07
mysqldump --add-drop-table -d <deine DB>|mysql <deine DB>

solltest du einfach auf der shell mal ausprobieren :D

joey.brunner
14-01-2003, 21:58
hi danke... ich hab jetzt einfach eine funktion dafuer geschrieben. dort uebergibtr man einfach die tabellen und dann werden diese geloescht.. trotzdem danke fuer die vielen antworten...

jeoy