Einträge nach bestimmter Zeit löschen

Hallo!

Gibt es eine Möglichkeit, Datenbankeinträge nach bestimmten Bedingungen automatisch zu löschen? Wie z.B.: Lösche, wenn älter als 7 Tage oder Lösche, wenn Spalte x größer als Wert y.
Ich hab in dem Zusammenhang, glaub ich, auch mal was von Cronjobs gelesen. Ich habe bei meinem Server eine Oberfläche, wo man die Cronjobs einstellen kann (crontab). Allerdings muss ich da einen Zeitpunkt und einen Befehl eingeben. Aber ich weiß nicht was, und wie es da rein muss :smile:
Ich hoffe, ihr könnt mir helfen.

Danke im Voraus
Christoph

Hi,

ich weiß ja nicht was du für ne Datenbank hast…
bei Oracle kannst du in der Datenbank wiederkehrende Jobs einstellen.
Wenn du dann ein kleine Prozedur schreibst die deinen Löschjob ausführt, dann kannst du diese per Job starten.

Von außen - schreib ein Shellscript das sich dann an die Instanz anmeldet und dort die Aktionen ausführt.

update () {

sqlplus -s $CONN_STR

Datenbank ist MySQL
Meine Adminoberfläche ist Confixx. Da gibts einen Punkt ‚Crontab‘. Da gibts es einige Textfelder:
Minute Stunde Tag im Monat Monat Wochentag Befehl

Diese muss ich füllen und auf Cronjob erstellen drücken.
Aber was schreib ich da rein? Bei ‚Befehl‘ einfach nur den SQL Befehl? DELETE FROM … WHERE id = …
aber dann hab ich ja da keine Bedingung drin a la
if ($erstellDatum

Datenbank ist MySQL
Meine Adminoberfläche ist Confixx. Da gibts einen Punkt
‚Crontab‘. Da gibts es einige Textfelder:
Minute Stunde Tag im Monat Monat Wochentag Befehl

Diese muss ich füllen und auf Cronjob erstellen drücken.
Aber was schreib ich da rein? Bei ‚Befehl‘ einfach nur den SQL
Befehl? [snip]

Nein hier kannst du System-Befehle eingeben wie z.B. mail, ls, mkdir etc.

Der Befehl, um eine MySQL Datenbank per (Linux?)Konsole zu manipulieren nennt sich „mysql“.

z.B.:

# mysql \
-h [hostname also bei dir wahrscheinlich localhost] \
-u [user - erklärt sich von selbst] \
-p'[passwort !Wichtig: kein Leerzeichen zwischen -p und dem passwort]' \
NameDerDatenbank \
-e "SQL-Statement"

also:

# mysql -h localhost -u ich -p'Geheim' Datenbank -e "irgendwas halt"

Was du sonst noch alles mit mysql machen kannst steht in der man-page

# man mysql

http://linux.die.net/man/1/mysql

Das Ganze solltest du allerdingt direkt auf der konsole vorher testen. :smile:
Wenn also ein ssh-Zugang vorhanden ist - nutze den auch!

Du kannst aber auch dem MySQL Server ab Version 5 sagen, dass er es selbst mache soll:
http://dev.mysql.com/doc/refman/5.0/en/stored-proced…

Danke für die Antworten! Ich werde mich damit wohl noch ein bisschen befassen müssen - das Wissen ist noch zu klein :smile:

mfg Christoph