Helau, gerne würde ich nachts per Cronjob alle Bestellungen mit einem bestimmten Status auf einen anderen Status setzen. Leider weiß ich nicht, wie ich das anstellen soll und bin dankbar für jede Unterstützung Danke Florian
Dazu Bedarf es keines externen Cronjobs, denn solche Dinge kann MySQL / MariaDB selbst. Nennt sich Ereignis oder Event und dort kannst Du dann die Abfrage eingeben und diese alle 12 Stunden ausführen lassen. Zum Beispiel: Update orders set orders_status = 0815 where orders_status = 666 Grüße, Dirk
und dann noch den aktuellen Status in die order_status_history schreiben, sonst klemmt es an anderen Stellen.
Ach herrje, wie geht das denn bzw. wie wäre der SQL Befehl dafür? Das, was @dmun da als Vorlage geliefert hat, konnte ich direkt so einbauen und es hat geklappt (Statusnr. habe ich natürlich noch angepasst ;-) )
@FlorianR Bitte nutze dazu die API, die macht für dich die entsprechenden Einträge in den verknüpften Tabellen, gerade auch was Datenkonsistenz und Integrität angeht, sollte darauf verzichtet werden das direkt in der Datenbank zu machen. (Link nur für registrierte Nutzer sichtbar.)
In dem Event können mehrere Abfragen vorhanden sein, Du kannst also die Änderungen Aufteilen: a) Alle Datensätze welche geändert werden sollen in eine Temporäre Tabelle schreiben b) Alle Orders ändern welche in der Temp.-Tabelle stehen c) Alle Historie-Einträge ändern welche in der Temp.-Tabelle stehen d) Temp.-Tabelle löschen Es gibt noch zahlreiche andere Wege, lässt sich alles recht kurz und knackig formulieren. Wenn Du Dich mit Stored Procedures auskennst, dann könntest Du dies auch in eine SP umsetzen und den Weg mit der Temp.Tabelle einsparen. Dann wird nur die SP auf gerufen vom Event. Grüße, Dirk