![]() |
[PHP/MySQL] Anzahl der Datensätze begrenzen
Moins,
wie kann ich in einer MySQL-Tabelle die Anzahl der Datensätze begrenzen? Es geht speziell darum, dass ich eine Tabelle hab, die relativ schnell sehr groß wird (die Tabelle wird zum Loggen von verschiedenen Ereignissen benutzt, und wächst so sehr schnell). Es soll, sobald eine bestimmte Anzahl von Tabellenreihen erreicht ist, der älteste Eintrag (alles sortiert nach Datum) gelöscht werden... Wie mach ich das am besten? |
Re: [PHP/MySQL] Anzahl der Datensätze begrenzen
LIMIT
|
Re: [PHP/MySQL] Anzahl der Datensätze begrenzen
Untersützt dein MySQL Trigger? (Tut das überhaupt eine Version? :gruebel:)
Wenn ja, platzier einen BEFORE INSERT-Trigger mit dem entsprechenden Delete-Kommande, wenn "SELECT Count(ID) FROM table > irgendwas" ist.. Ansonsten musst du separate Statements schicken. |
Re: [PHP/MySQL] Anzahl der Datensätze begrenzen
Zitat:
Wenn es funktioniert... wie lösch ich dabei immer den ältesten Eintrag (= den mit dem niedrigsten Date-Wert)? Es soll ja nicht irgendeiner gelöscht werden... Zitat:
|
Re: [PHP/MySQL] Anzahl der Datensätze begrenzen
Ich würde auch mittels COUNT die Anzahl der Datensätze ermitteln und anschließend ggf. ein weiteres Query mittels DELETE foo WHERE timestamp ... ausführen.
LIMIT bringt nur dann etwas, wenn du eine begranzte Anzahl an Datensätzen auslesen möchtest. |
Re: [PHP/MySQL] Anzahl der Datensätze begrenzen
Zitat:
|
Re: [PHP/MySQL] Anzahl der Datensätze begrenzen
Zitat:
|
Re: [PHP/MySQL] Anzahl der Datensätze begrenzen
MIN()
|
DP-Maintenance
Dieses Thema wurde von "alcaeus" von "Programmieren allgemein" nach "Datenbanken" verschoben.
Auch wenn der Zugriff ueber PHP erfolgt, es geht immer noch um Datenbanken ;) |
Re: [PHP/MySQL] Anzahl der Datensätze begrenzen
Ich würde es so machen:
Einfügen des Logs Nachschauen wie viele Datensätze vorhanden sind Überflüssige löschen Löschen geht mit: Herausfinden welcher der letzte Eintrag ist welcher bleiben soll: SELECT id,timestamp FROM datenbank WHERE 1 ORDER BY timestamp DESC LIMIT x,1 // x ist die Anzahl wie viele Maximal da sein sollen dann hast du die ID und den Timestamp vom letzten und kannst alle löschen wo der Timestamp kleiner ist als der. Ich hoffe, das klappt so :oops: ist nämlich nur eine grobe Überlegung gewesen Flare |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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