Ich habe etwas anderes Szenario mit Trigger zu arbeiten.Wie bekomme ich den vorherigen Datensatz, nachdem der Update-Trigger ausgeführt wurde?
Ich möchte Datensatz in Protokolltabellen vor dem tatsächlichen Update auf Haupttabelle einfügen. Aber ich möchte es anders machen.
Wie nur Datensätze in Log-Tabellen hinzufügen, wenn wirklich Updates in der Haupttabelle passieren, und ich möchte es mit MySQL Trigger tun.
Ich befestige hier Screenshots.
Wenn ich id = 1 für Namen aktualisieren = ABCD dann ersten vorherigen Zustand der Zeile lesen, es fügt Tabelle loggt sein.
Was ich prüfen möchte, ist mit MySQL-Trigger, dass es fügt nur Tabelle main_table_log, wenn die tatsächliche Aktualisierung main_table passiert. Wenn keine Aktualisierungen in main_table vorhanden sind, sollte kein Eintrag zur main_table_log-Tabelle hinzugefügt werden.
Kann mir jemand dabei helfen? Ich denke, dass es machbar sein kann, aber nicht, wie man es macht?
Und natürlich verwende ich PHP als Front.
Vielen Dank für die schnelle Antwort. Anstatt jedes Feld zu überprüfen, kann ich wissen, ob OLD-Datensatz tatsächlich aktualisiert wird? Weil ich ungefähr 10-15 Felder in jeder Tabelle habe. – NullPointer
Haben Sie eine Zeitstempelspalte mit 'ON UPDATE CURRENT_TIMESTAMP'? Dann können Sie einfach diese Spalte überprüfen, da sie nicht aktualisiert wird, wenn keine der anderen Spalten aktualisiert wird. Siehe http://stackoverflow.com/questions/6296313/mysql-trigger-after-update-only-if-row-haschanged – Barmar
Ich schaue auf den Link, den Sie angegeben haben. Ich versuchte zuerst, verwandte Frage zu finden, konnte aber nicht finden. – NullPointer