Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Alle Datensätze in allen Tabellen löschen (https://www.delphipraxis.net/150597-alle-datensaetze-allen-tabellen-loeschen.html)

manfred_h 21. Apr 2010 15:42

Datenbank: Firebird • Version: 2.1 • Zugriff über: Fibplus

Alle Datensätze in allen Tabellen löschen
 
Hallo zusammen

besteht eine Möglichkeit in einer DB alle Datensätze in allen Tabellen zu löschen?
Die DB beinhaltet viele Tabllen und manuell ist es ein wenig umständlich.

Danke für Eure Tipps.

Manfred

borwin 21. Apr 2010 15:57

Re: Alle Datensätze in allen Tabellen löschen
 
Du musst alle Tabellennamen aus der Datenbank auslesen und dann ein
SQL-Code:
 DELETE FROM [Tabellenname]
ausführen.
Wenn Du Referenzen zwischen den Tabellen hast (Was eigentlich sein soll) musst Du noch die Reihenfolge beachten.
Erst Detail dann Master. Andere Möglichkeit die Constrains entfernen vor dem Löschen und wieder neu anlegen.

Andere Variante einen Sript von Deinen Metadaten erstellen (Tool IBExpert)
Leere Datenbank anlegen und den Sript einspielen. Damit sind alle Tabellen leer.

Gruß Borwin

manfred_h 21. Apr 2010 16:25

Re: Alle Datensätze in allen Tabellen löschen
 
Hallo borwin

Zitat:

Zitat von borwin
Andere Variante einen Sript von Deinen Metadaten erstellen (Tool IBExpert)
Leere Datenbank anlegen und den Sript einspielen. Damit sind alle Tabellen leer.

Danke für den Tipp.
Dies geht eindeutig am schnellsten. :dp:

Shalom
Manfred

s.h.a.r.k 21. Apr 2010 16:28

Re: Alle Datensätze in allen Tabellen löschen
 
TRUNCATE TABLE ist glaube schneller als das DELETE.

Bei Oracle kannst bzgl. den Constraints ein CASCADE CONSTRAINTS machen, um diese auszuhebeln.

manfred_h 21. Apr 2010 16:34

Re: Alle Datensätze in allen Tabellen löschen
 
Zitat:

Zitat von s.h.a.r.k
TRUNCATE TABLE ist glaube schneller als das DELETE.
Bei Oracle kannst bzgl. den Constraints ein CASCADE CONSTRAINTS machen, um diese auszuhebeln.

Danke auch für Deinen Tipp.

Shalom
Manfred

mjustin 21. Apr 2010 17:35

Re: Alle Datensätze in allen Tabellen löschen
 
Für Historiker: in InterBase gab es eine 'Backdoor' mit der man alle Daten löschen konnte:

Backdoor in Borlands Datenbank Interbase seit 1992
http://www.heise.de/newsticker/meldu...992-29859.html

Zitat:

"Zudem entdeckten die Firebird-Entwickler eine weitere versteckte Funktion in Interbase: Je nachdem, welche Parameter übergeben werden, kann sie den Interbase-Server zum Absturz bringen oder gleich die ganze Datenbank löschen. Offenbar hat Borland/Inprise diese Funktion 1994 für Testzwecke eingebaut und darauf bestanden, sie in künftigen Versionen beizubehalten." ...
Aber die ist in Firebird 2.1 nicht mehr vorhanden :)

mkinzler 21. Apr 2010 18:16

Re: Alle Datensätze in allen Tabellen löschen
 
Diese war schon in der inoffiziellen Version von IB6 nicht mehr da und damit auch in der daraus entstandenen FireBird Versionen

Chemiker 21. Apr 2010 18:34

Re: Alle Datensätze in allen Tabellen löschen
 
Hallo manfred_h,

aber erst nach einen BACKUP und RESTORE ist die Datenbank verkleinert.

Bis bald Chemiker

manfred_h 22. Apr 2010 09:13

Re: Alle Datensätze in allen Tabellen löschen
 
Hallo nochmals

@mjustin: Danke für die Historischen Hinweise. :coder2:
@mkinzler: Danke auch Dir. :cheer:
@Chemiker: Das ist gut zu wissen. :thumb:

Shalom
Manfred


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz