mysql Wyzwalacz do rejestrowania, znajdź zmienione kolumny

Piszę wyzwalacz, aby śledzić wszystkie zmiany zachodzące w tabeli. Niestety tabela ma ponad 150 kolumn i chciałem uniknąć pisania każdej kolumny w kodzie (np. New.col1, new.col2 ....) i dlatego napisałem następujące zapytanie w „po wyzwoleniu aktualizacji”

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

Ten pomysł powoduje wiele problemów z powodu powielania danych, które nie zostały zmienione w zapytaniu o aktualizację.

W skrócie chcę dynamicznie dowiedzieć się, które kolumny były częścią zapytania o aktualizację, a jeśli nie jest to możliwe, czy istnieje sposób na iterację przez wszystkie kolumny „nowego” wiersza, aby móc dynamicznie porównywać stare. @ ColName == new . @ colName?

już widziałemOracle PL / SQL: Dynamicznie przechylaj kolumny wyzwalania, Jak ustalić, czy coś się zmieniło w wyzwalaczu aktualizacji w t-sql iWyzwalacz aktualizacji MySQL: WSTAWIANIE wartości kolumn, które rzeczywiście się zmieniły.

Ostatni link to zamknięcia do tego, czego potrzebuję tylko z jedną różnicą, nie chcę twardo kodować nazw kolumn w poniższej tabeli, ponieważ mam ponad 100 kolumn we wszystkich tabelach, dla których zamierzam napisać podobny wyzwalacz !!

IF NEW.column1 <> OLD.column1 THEN INSERT INTO... END IF; IF NEW.column2 <> OLD.column2 THEN INSERT INTO... END IF

questionAnswers(2)

yourAnswerToTheQuestion