mysql Trigger für die Protokollierung, finden die geänderten Spalten

Schreibe ich einen trigger, um zu verfolgen alle änderungen, die in diesem Fall in eine Tabelle. Leider ist die Tabelle hat 150+ Spalten und das wollte ich vermeiden zu schreiben, die jede Spalte in der code (BSP. neue.col1, neue.col2....) und so schrieb ich folgende Abfrage in "after update-trigger"

INSERT INTO logs SELECT *, NOW() FROM abc WHERE abc.id = NEW.Id;

Diese Idee verursacht mehrere Ausgabe durch Vervielfältigung der Daten, die nicht geändert im update-Abfrage.

In aller Kürze möchte ich dynamisch feststellen, welche Spalten waren Teil der update-Abfrage und wenn das nicht möglich ist, gibt es eine Möglichkeit zum iterieren durch alle Spalten der "neuen" Zeile, so kann ich dynamisch vergleichen old.@colName == new.@colName?

Habe ich schon gesehen
Oracle PL/SQL: Schleife Über Trigger Spalten Dynamisch, Wie Sie feststellen, ob sich etwas geändert im update-trigger in t-sql und MySQL-UPDATE-trigger: Einsetzen der Werte der Spalten, die tatsächlich geändert wurden.

Den letzten link-das schließt an das, was ich brauche, nur mit einem Unterschied, ich will nicht zu hart code-Spalte-Namen in der folgenden Aussage, denn ich habe über 100+ Spalten in allen Tabellen, die ich schreiben werde, um ähnliche Auslöser für!!

IF NEW.column1 <> OLD.column1 THEN INSERT INTO... END IF; IF NEW.column2 <> OLD.column2 THEN INSERT INTO... END IF
InformationsquelleAutor Sap | 2012-07-24
Schreibe einen Kommentar