![]() |
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. |
Re: Maximale Anzahl Records im Table
In dem du die Tabelle nach einem Timestamp sortieren lässt.
|
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? |
Re: Maximale Anzahl Records im Table
Einfach per Trigger überprüfen ob maximale Anzahl erreicht ist und dann den kleinsten löschen.
|
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 |
Re: Maximale Anzahl Records im Table
Um was für Anzahl von Datensätze Reden wir hier eigentlich?
|
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:
Mit diesem Ansatz klappt das wunderbar.
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 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 15:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz