AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Maximale Anzahl von Datensätzen in einer Tabelle
Thema durchsuchen
Ansicht
Themen-Optionen

Maximale Anzahl von Datensätzen in einer Tabelle

Ein Thema von Meriones · begonnen am 17. Jun 2008 · letzter Beitrag vom 20. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Meriones

Registriert seit: 25. Feb 2007
33 Beiträge
 
#1

Maximale Anzahl von Datensätzen in einer Tabelle

  Alt 17. Jun 2008, 14:05
Datenbank: Firebird embedded • Version: 2 • Zugriff über: zeos
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.

Viele Grüsse, meriones
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Maximale Anzahl von Datensätzen in einer Tabelle

  Alt 17. Jun 2008, 14:11
Hast du ein Timestamp-Feld? Oder willst du den kleinsten Wert nehmen?
Markus Kinzler
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Maximale Anzahl von Datensätzen in einer Tabelle

  Alt 17. Jun 2008, 14:14
Ein Timestamp wär wohl die beste Lösung. Außer du kannst einen Überlauf bei deinem Primärschlüssel ausschließen.
  Mit Zitat antworten Zitat
automatix

Registriert seit: 1. Mai 2008
Ort: Remscheid
39 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Maximale Anzahl von Datensätzen in einer Tabelle

  Alt 17. Jun 2008, 14:17
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:
delete form
  TABELLE
where
  ID < (
    select
      max(ID)
    from
      TABELLE
  ) - 2000
Grüße
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Maximale Anzahl von Datensätzen in einer Tabelle

  Alt 18. Jun 2008, 07:51
Hallo #

SQL-Code:
delete form
  TABELLE
where
  ID < (
    select
      max(ID)
    from
      TABELLE
  ) - 2000
Hier gehst du aber davon aus, dass die Nummern ohne Unterbrehcnung fortlaufend sind.
Wenn der Nutzer mal selber was löscht, werden mehr Daten gelöscht als gewünscht.

SQL-Code:
delete from
  Log_Table Log1
where
  Log1.ID not in (
    select
     first 2000 Log2.Id
    from
      Log_Table Log2
    Order By Log2.Id Desc
  )
Ungetestet ...


Heiko
Heiko
  Mit Zitat antworten Zitat
Meriones

Registriert seit: 25. Feb 2007
33 Beiträge
 
#6

Re: Maximale Anzahl von Datensätzen in einer Tabelle

  Alt 18. Jun 2008, 12:08
Danke für die Antworten...

@hoika:
Sieht gut aus aber das ORDER ist nicht notwendig, oder?

Gruss, meriones
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

Re: Maximale Anzahl von Datensätzen in einer Tabelle

  Alt 18. Jun 2008, 12:56
Ohne ORDER BY wäre das Ergebnis ja unsortiert, Du wüsstest also nicht, welche Datensätze Du löschst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Maximale Anzahl von Datensätzen in einer Tabelle

  Alt 18. Jun 2008, 13:01
Und das könnte u.U. fatal sein.
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Maximale Anzahl von Datensätzen in einer Tabelle

  Alt 18. Jun 2008, 13:19
Hallo,

noch mal zum Order By.
Ohne das Order By kann Firebird selbst entscheiden,
in welcher Reihenfolge die Sätze zum Client gelangen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Meriones

Registriert seit: 25. Feb 2007
33 Beiträge
 
#10

Re: Maximale Anzahl von Datensätzen in einer Tabelle

  Alt 20. Jun 2008, 14:36
Danke erstmal an alle aber,
irgendwie hab ich noch Verständnisschwierigkeiten, ihr müsst mir nochmal helfen...

Zitat:
Ohne ORDER BY wäre das Ergebnis ja unsortiert, Du wüsstest also nicht, welche Datensätze Du löschst.
Zitat:
Und das könnte u.U. fatal sein.
Aber es kann mir doch egal sein in welcher Reihenfolge die Datensätze gelöscht werden, oder?
Firebird sollte doch den DELETE Befehl in einem abarbeiten, bevor wieder auf die Tabelle zugegriffen wird???

Zitat:
Ohne das Order By kann Firebird selbst entscheiden,
in welcher Reihenfolge die Sätze zum Client gelangen.
Wieso zum Client? Wenn ich einen DELETE Befehl mit SELECT in der WHERE clausel absetzte werden doch keine Daten zum Client übertragen??? (Zudem überlege ich das ganze im Trigger AfterInsert zu betreiben).

Grübel , meriones
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 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