Inhalt einer Datenbank-Tabelle jeden Monat löschen

Hallo Leute!
ich speichere Traffic-Daten eines Netzwerks in einer Mysql-Datenbank. Da die Datenmenge so groß ist, werden nach einem Monat Millionen von Datensätzen gespeichert. So dauert dann die Suche in der DB dementsprechend lange. Diese Traffic-Daten müssen aber für ein Jahr gespeichert werden. Jetzt teile ich die Daten in Monatstabellen auf…Das funktioniert so weit…Nur ich will ich, dass wenn ein Jahr rum ist, dass die alten Daten in der Monatstabelle gelöscht werden(wenn die Speicherung in Januar 05 anfängt dann müssen die Daten von Januar 06 in der gleichen Tabelle „Januar“ gespeichert werden und die alten Daten aus 2005 müssen vorher gelöscht werden)…Meine Frage ist jetzt wie könnte ich dies realisiert??? Trigger?? Können sie sowas wie truncate table??? SQL-Skript ,das mit Hilfe von einem Cron-Job am Anfang jedes Monats ausgeführt wird(Aber das Löschen muss vor dem Speichern geschehen )???

Gruß
Simo

Hallo Simo
Mache mit vba follgendes:
zuerst bestimme den Monat month(now)
dann setzte diesen in die Abrage ein:
set f=OpenRecordset Select(tabelle.*,…From…link month(now))
f.movelast
rec=f.recordcount
for i=1 to recordcount
f.movefirst
f.edit
f.delete 'löschen
f.update 'speichern
next i

und wegen dem autostart vom Makro kannst Du mit OnTime oder OnTimer oder so Arbeiten. Wie z.B.
OnTime(now()+30) docmd.run(makroname)

Grüsse Sebastian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

wie du schon richtig erkannt hast, per cron und sql-Befehl.

0 0 1 \* \* (/pfad\_zu/)mysql -u --password=
(geklaut von weiter unten...)
In deletemonth müßtest du den aktuellen Monat ermitteln und die entsprechende Tabelle löschen.
Allerdings würde ich mir nicht den Stress antun, die Tabelle punktgenau um Mitternacht zu löschen und dann neu zu befüllen, das geht sicher schief (es sei denn, du löschst selektiv nach timestamp - Logs sollten ja einen solchen haben) - was spricht gegen Tabellen wie januar06...dezember 06, januar07? Dann kannst du das Löschen in aller Ruhe und versetzt durchführen lassen, auch als


    truncate

 oder 

    drop table



Gruß, m.

hallo!!
Danke sehr für eure Antworten!!! Danke muzel! ich hab das schon genauso gemacht mit dem Cron-Job. Da ich mein Frontend mit PHP geschrieben hab, führe ich mit Hilfe des Cronjobs eine PHP-Daten aus, die nichts anders macht, als den aktuellen Monat rauszufinden und ein truncate-Befehl auf die Tabelle des nächsten Monats auszuführen…Ich wird dann natürlich insgesammt immer nur 11 Monate in der DB haben, aber zumindest ist dies besser als die aktuelle Tabelle zu leeren, weil ich nicht ganz genau weiß wann die Neuspeicherung stattfindet…Ich hab´ s natürlich auch ausprobiert, nur die alten Daten mit Hilfe des Timestamp zu löschen, nur der SQL-Statement hat lange gedauert, also truncate geht auf jeden Fall am besten und am schnellsten…
Der Sinn der ganzen Sache ist, dass ich am Ende so eine Art Ring-Speicherung hab, so dass ich mich gar nicht mehr um das Löschen alter Tabellen vom letzten Jahr kümmern muss…

Gruß
Simo