![]() |
Datenbank: Firebird embedded • Version: 2 • Zugriff über: zeos
Maximale Anzahl von Datensätzen in einer Tabelle
Hallo,
ich würde gerne die maximale Anzahl an Datensätzen in einer Tabelle begrenzen (z.B. 2000 Datensätze). Dazu würde ich gerne per After-Insert-Trigger die ältesten (über Primkey?) Datensätze löschen. Kann mir jemand helfen wie der SQL Befehl dazu aussehen müsste? Ich komme einfach nicht drauf. :gruebel: Viele Grüsse, meriones |
Re: Maximale Anzahl von Datensätzen in einer Tabelle
Hast du ein Timestamp-Feld? Oder willst du den kleinsten Wert nehmen?
|
Re: Maximale Anzahl von Datensätzen in einer Tabelle
Ein Timestamp wär wohl die beste Lösung. Außer du kannst einen Überlauf bei deinem Primärschlüssel ausschließen.
|
Re: Maximale Anzahl von Datensätzen in einer Tabelle
Hallo!
Was ist der 'primary key'? Kannst Du den Aufbau der Tabelle noch ändern? Eine Spalte anlegen die eine fortlaufende Nummer beinhaltet. Sollte in den meisten Fällen die ID und auch der 'primary key' sein.
Delphi-Quellcode:
Grüße
delete form
TABELLE where ID < ( select max(ID) from TABELLE ) - 2000 |
Re: Maximale Anzahl von Datensätzen in einer Tabelle
Hallo #
SQL-Code:
Hier gehst du aber davon aus, dass die Nummern ohne Unterbrehcnung fortlaufend sind.
delete form
TABELLE where ID < ( select max(ID) from TABELLE ) - 2000 Wenn der Nutzer mal selber was löscht, werden mehr Daten gelöscht als gewünscht.
SQL-Code:
Ungetestet ...
delete from
Log_Table Log1 where Log1.ID not in ( select first 2000 Log2.Id from Log_Table Log2 Order By Log2.Id Desc ) Heiko |
Re: Maximale Anzahl von Datensätzen in einer Tabelle
Danke für die Antworten...
@hoika: Sieht gut aus aber das ORDER ist nicht notwendig, oder? Gruss, meriones |
Re: Maximale Anzahl von Datensätzen in einer Tabelle
Ohne ORDER BY wäre das Ergebnis ja unsortiert, Du wüsstest also nicht, welche Datensätze Du löschst.
|
Re: Maximale Anzahl von Datensätzen in einer Tabelle
Und das könnte u.U. fatal sein.
|
Re: Maximale Anzahl von Datensätzen in einer Tabelle
Hallo,
noch mal zum Order By. Ohne das Order By kann Firebird selbst entscheiden, in welcher Reihenfolge die Sätze zum Client gelangen. Heiko |
Re: Maximale Anzahl von Datensätzen in einer Tabelle
Danke erstmal an alle aber,
irgendwie hab ich noch Verständnisschwierigkeiten, ihr müsst mir nochmal helfen... Zitat:
Zitat:
Firebird sollte doch den DELETE Befehl in einem abarbeiten, bevor wieder auf die Tabelle zugegriffen wird??? Zitat:
Grübel :gruebel: , meriones |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 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 by Thomas Breitkreuz