Триггер mysql для регистрации, поиск измененных столбцов

Я пишу триггер для отслеживания всех изменений, происходящих в таблице. К сожалению, в таблице более 150 столбцов, и я хотел избежать записи каждого столбца в коде (Ex. new.col1, new.col2.... )и поэтому я написал следующий запрос в "триггер после обновления"

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

Эта идея вызывает множество проблем из-за дублирования данных, которые не изменяются в запросе на обновление.

Короче говоря, я хочу динамически выяснить, какие столбцы были частью запроса на обновление, и если это невозможно, есть ли способ перебрать все столбцы «новой» строки, чтобы я мог динамически сравнивать старые. @colName == new.@colName?

я уже видел Oracle PL/SQL :Динамический цикл по столбцам триггера , Как определить, изменилось ли что-либо в триггере обновления в t -sql и Триггер MySQL UPDATE :ВСТАВКА значений столбцов, которые фактически изменились .

Последняя ссылка - это то, что мне нужно, с одним отличием: я не хочу жестко кодировать имена столбцов в следующем статусе, потому что у меня более 100+ столбцов во всех таблицах, для которых я собираюсь написать аналогичный триггер!!

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

6
задан Community 23 May 2017 в 12:08
поделиться