Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Maximale Anzahl Records im Table (https://www.delphipraxis.net/95578-maximale-anzahl-records-im-table.html)

Werwurm 9. Jul 2007 22:19

Datenbank: Interbase • Version: 6.5 • Zugriff über: Delphi IB-Komponenten

Maximale Anzahl Records im Table
 
Hallo an alle,

ich habe vor längerer Zeit eine Lagerverwaltung geschrieben.
In der zugehörigen DB befindet sich auch ein Table in dem die getätigten Aktionen protokolliert werden.
Diese können mir im Fehlerfall als Mail (natürlich mit Zustimmung des User) zugesendet werden.

Nun habe ich festgestellt, dass dieser Table eine beachtliche erreicht hat.
Ich habe einen Tracelevel implementiert, über den die Anzahl der Einträge gesteuert wird. Jedoch wird das Programm stärker genuzt als ursprünglich geplant :).

Nun meine Frage:
Gibt es in Interbase eine Möglichkeit die Recordanzahl aus z.B. 10000 zu begrenzen. :?:
Ich stelle mir das so vor, das immer die ältesten Records gelöscht werden, um die Tablegröße beizubehalten.

Mein erster Versuch dieses in einem Trigger zu lösen, habe ich schnell wieder verworfen.
Zwar kann ich die Anzahl der Records auslesen, doch wie lösche ich die ältesten? :wall:

Ich bin für jede Hilfe dankbar, denn die Suche hier im Forum und unter Google brachte leider nicht den gewünschten Erfolg.

mkinzler 9. Jul 2007 22:22

Re: Maximale Anzahl Records im Table
 
In dem du die Tabelle nach einem Timestamp sortieren lässt.

Werwurm 9. Jul 2007 22:26

Re: Maximale Anzahl Records im Table
 
Hallo mkinzler,

Danke für dei schnelle Antwort.
Die Tabelle ist nach dem Timestamp sortiert.
Doch wie kann ich Records deleten, ohne zu wissen welche TimeStamps ich löschen will?

mkinzler 9. Jul 2007 22:30

Re: Maximale Anzahl Records im Table
 
Einfach per Trigger überprüfen ob maximale Anzahl erreicht ist und dann den kleinsten löschen.

hoika 9. Jul 2007 22:39

Re: Maximale Anzahl Records im Table
 
Hm,

ich würde nicht löschen,
sondern in eine 2. DB verschieben.

(so als "wer war mal drin ?")


Heiko

mkinzler 9. Jul 2007 22:43

Re: Maximale Anzahl Records im Table
 
Um was für Anzahl von Datensätze Reden wir hier eigentlich?

Werwurm 9. Jul 2007 23:02

Re: Maximale Anzahl Records im Table
 
Manchmal siehtr man den Wald vor lauter Bäumen nicht. :oops:
Habe nicht an die Min Funktion gedacht.
Habe es aber nicht mittels Trigger gelöst sondern in der SP die ich zum füllen der Tabelle nutze.

SQL-Code:
  SELECT COUNT(PC) FROM "T_LOG" INTO :ANZAHL;
  IF (:ANZAHL>50000) THEN BEGIN
    SELECT MIN(zeit) FROM "T_LOG" INTO :ZEIT;
    DELETE FROM "T_LOG" WHERE zeit=:ZEIT;
  END
Mit diesem Ansatz klappt das wunderbar.

In dem bisherigen LOG schlummern über 900000 Records.
Diese belasten zwar nicht massivdie DB, jedoch brauche ich nicht alles vorhalten. Und beim versenden des Log's lese ich mir keinen Wolf.
Deshalb habe ich jetzt die Grenze bei 50000 Records gesetzt. Dann passt es auch noch in Excel. Ich denke das sollte im überschaubaren Rahmen bleiben.

Vielen Dank für die schnelle Hilfe. :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 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