Cron Job mysql

Hallo allerseits,

in einer mysql-Datenbank soll alle 5 Min. automatisch eine Abfrage über Datenbank x, Tabelle y, derart erfolgen, dass geprüft wird ob Feld z jedes zur Tabelle gehörenden Datensatzes den Wert 1 hat.

Wenn das der Fall ist, soll in Feld a, dieser betreffenden Datensätze dann jeweils der Wert 0 eingetragen werden.

Kann mir jemand einen Ansatz zur Lösung sagen?
Bietet mysql selbst die Möglichkeit derartige Crown-Jobs zu erstellen?
Macht man soetwas besser mit Fremdprogrammen/Skripten, die in regelmäßigen Abständen Abfrage und Änderung durchführen?

Würde mich freuen, wenn mir jemand einen Lösungsansatz dazu geben könnte.

Danke schon mal.
Gruß
K.

Hallo Klaus,

ein cronjob (nicht Crown-) ist Sache des Betriebssystems.
http://en.wikipedia.org/wiki/Cron
MySQL hat (AFAIK) keine derartigen Möglichkeiten, andere Datenbanken (Oracle) schon.
Du mußt also ein Script schreiben (bei UNIX ein Shellscript), das deine gewüschten SQL-Anweisungen enthält, und dieses Shellscript in der crontab eintragen:

crontab -e

und zwar etwa so:

\*/5 \* \* \* \* /pfad\_zu\_meinem\_script/script.sh

HTH, muzel

Hallo,
danke für die Antwort.
Schade, dass mysql keine eigene Möglichkeit dazu bietet.
Noch ist mir nicht ganz klar wie die Scripte aufgebaut sein müssen. Php hat ja die Möglichkeit mit mysql zu kommunizieren.
Müßten die Cronjob-Scripte dann geeignete php-Scripte aufrufen?
Das ganze soll übrigens auf Linux suse 10.x stattfinden.
Gruß
K.

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

Also, um noch mal auf den Ausgangspunkt zurückzukommen, du brauchst eine Zeitsteuerung, unter UNIX/Linux/… cron, unter Windows nennt sich das wohl „geplante Tasks“. Damit rufst du in bestimmten Zeitabständen dein Script auf. Das Script kann ein php-Script sein, es kann auch ein direkter mysql-Aufruf sein. Beispiele finden sich genügend, google mal nach „mysql cronjob“!
Der gesuchte SQL-Befehl lautet vermutlich

update y set a=0 where z=1 

Den mußt du nur noch in das (z.B. PHP-)Script verpacken und regelmäßig aufrufen lassen.
m.

Hallo,
so ganz verstanden habe ich das -glaube ich- noch nicht.

Skripte müssen doch von irgendeinem Interpreter verabeitet werden.
Unter Linux macht das die Bash(?).
Die dazugehörigen Skripte können ja nun nicht direkt mit mysql kommunizieren.
Also müssen DIESE Skripte einen geeigneten Interpreter aufrufen und dem die mysql-Skripte übergeben.
Der Interpreter wird wahrscheinlich php4/5 sein.
Oder gibt es eine Möglichkeit der mysql-Datenbank direkt Skripte/Sql-Statements zu übergeben?
Gruß
K.

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

Kann doch nicht so schwer sein…
Ich denke mal, das folgende in einem Shellscript sollte tun, was du willst, natürlich mit korrektem Nutzer, Passwort, DB-Namen.

#!/bin/sh
echo "update y set a=0 where z=1;" | /usr/bin/mysql -u user -ppasswort database

Dieses Script trägst du wie oben beschrieben in die crontab ein.
Gruß, m.

Ja super.
Bin noch nicht ganz so lange bei Linux dabei…
Danke.

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