Datenbank Trigger auf Update Tabelle s_articles_details zickt rum...

Guten Tag,

ich habe ein einfaches Anliegen: Ich möchte bei jeder Änderung des Bestandes eines Artikels ein Datum speichern, damit ich weiß wann sich der Bestand zuletzt geändert hat: quasi „Wann wurde der Artikel zuletzt gekauft“. Dazu habe ich einen Trigger in der Datenbank angelegt der mir bei Update der Tabelle s_articles_details (prüft ob sich das Bestandfeld instock ändert) ein aktuelles Datum in attr15 in s_articles_attributes schreibt.

Was funktioniert: Wenn atttr15 leer ist wird das aktuelle Datum bei Bestandsänderung im Backend reingeschrieben. Wenn ich den Bestand in der Datenbank direkt ändere wird dieses Datum aktualisiert.

Was nicht funktioniert: Wenn ich den Bestand im Backend ändere und es ist schon ein Datum in attr15 vorhanden, wird es nicht aktualisiert. Es ist als ob der Trigger dann nicht gestartet wird.

Wird die Datenbank über das Backend gecacht? Wenn ja, warum funktioniert es wenn das feld NULL also leer ist? Gibt es eine Lösung dafür oder funktioniert der Ansatz mit Shopware so nicht? Habt ihr vielleicht eine andere Idee?

 

Mit freundlichen Grüßen

Bastian

Hallo,

vermutlich wird dein Feld mit dem alten Wert überschrieben nachdem dein Trigger ausgelöst wurde. Ablauf aus dem Backend 1.) Update s_articles_details, 2.) Trigger löst aus 3.) das Backend updated die Tabelle s_articles_attributes mit den Inhalten (alte Werte aus dem geladenen Datensatz, die nicht null sind).

Meine Lösung wäre ein regelmäßig ausgeführtes SQL Script, was den Wert setzt.

1 „Gefällt mir“

Hallo sacrofano,

das wars! Danke dir! Es wird tatsächlich der alte Wert nochmal drüber gebügelt, der Sinn dahinter bleibt mir allerdings verborgen. Ich habe es nun so gelöst dass in der attributes Tabelle nochmal geprüft wird, ob das neue Datum < altes Datum ist, wenn ja dann schreibe das alte wieder rein, also das vom Trigger.

Nochmals vielen Dank, manchmal sind die Lösungen einfach.

Gruß

Bastian