"We are back" « oc.at

SQL Anzahl der Datensätze begrenzen?

Timmää 02.12.2009 - 19:17 9303 37
Posts

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
wenn count(*) >= 100 lösche ersten datensatz (select .. order by id asc limit 1)
insert...

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12144
…und schon hamma die Racecondition! :D

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Für seine Anforderungen sollte es reichen ;)
Verpackt ers halt in eine transaction..
Bearbeitet von Obermotz am 04.12.2009, 10:10

JDK

Oberwortwart
Avatar
Registered: Feb 2007
Location: /etc/graz
Posts: 2864
Wenn schon 100 Einträge vorhanden sind, den ältesten löschen und den neuen einfügen. (wie Obermotz schon erwähnt hat)

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14725
einen trigger auf "after insert" geben und du musst dich aktiv nie wieder um etwas kümmern...

Timmää

Big d00d
Avatar
Registered: Nov 2007
Location: linz
Posts: 222
Herzlichsten Dank für die Vorschläge.
Unser aktueller Lösungsansatz ist wie semtex gesagt hat ein Trigger after insert und dann soll er den ersten löschen, allerdings arbeiten wir gerade daran diesen zu identifizieren, da wir keinen schlüssl ham.

edit: zugreifen können wir jetzt aber diese blöde Verzweigung will nicht funktionieren.

lg, timmää
Bearbeitet von Timmää am 09.12.2009, 15:34

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14725
naja, identifikation ist "einfach".... ein timestamp dazu, welches default wert "datum.now" hat (die genaue sql syntax müsst ich jetzt nachschaun)

und ja, trigger können durchaus "gefinkelt" sein :D

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
now() & über mysql?

UncleFucka

-
Avatar
Registered: Jun 2002
Location: CH
Posts: 4737
also ich würde ums zu identifizieren mit einer sequence die von 1-100 geht einfügen als schlüssel, dann kannst du immer beim trigger den datensatz mit der aktuellen ID überschreiben. ist weniger arbeit für die DB und für dich (im vergleich zu daten sortieren oder maxen oder whatever)

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
musst ja auch erst abfragen obs die Nummer schon gibt.
Da wär die Methode: letztes löschen, neues eintragen glaub ich praktischer

Triple-X

Addicted
Avatar
Registered: Feb 2001
Location: Pregarten (OÖ)
Posts: 485
Mit mysql kannst du das aber mit einem REPLACE INTO machen, da spart dir dann das vorher abfragen bzw. das löschen des Datensatzes.

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4307
REPLACE löscht aber auch den datensatz und erstellt einen neuen. da wäre dann update noch geschickter. aber man müßte dafür danna auch speichern, bei welcher nummer man gerade ist.

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Für 100 Datensätze würde ich mir den Aufwand mit einer Datenbank überhaupt nicht antun und das Ganze in einem Textfile speichern. Bei jedem Update neu schreiben. Im Speicher ein Array halten. Fertig.

Nico

former person of interest
Registered: Sep 2006
Location: -
Posts: 4082
falls man auf dem server via php dateien schreiben/manipulieren darf.

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12144
Zitat von Nico
falls man auf dem server via php dateien schreiben/manipulieren darf.

Wenn nicht, darf man ja immer noch eine bessere Sprache verwenden! :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz