Sekira
@Sekira

Как сделать "ручной" аналог триггера на UPDATE в MySQL без использования триггера?

Есть необходимость в нахождении строк в таблице, у которых изменились определенные поля.
Хостер не поддерживает триггеры, переезд в расчет не берем.

Сначала была идея добавить поля типа boolean и в скриптах, в местах, где происходит UPDATE приписать еще `поле_метки_что_поле_изменено` = 1
И после изменения, оно используется в стороннем софте и после проверки возвращается на 0.
Но подумал, что могу изменить вручную, например в PHPMyAdmin, а метку поставить забуду.

Потом придуман вариант, что поля, за которыми нужно «следить», записывать хэш в отдельное поле, то есть `хэш`=MD5(CONCAT(`поле2`,`поле3`,`поле5`))
И перед использованием в стороннем софте, делать проверку на изменился ли хэш, и если изменился помечать поля или сразу использовать их и т.п.
Благо строк не очень много ~5000 и по тестам удовлетворяет скорость.
Пока остановился на этом варианте, но может кто знает вариант лучше?
Спасибо!
  • Вопрос задан
  • 2998 просмотров
Решения вопроса 1
winbackgo
@winbackgo
Еще возможно использовать поле TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Vampiro
Для 5к строк я инсертил бы новую, помечая предыдущую «удаленной». Что-то а-ля версионность получилось бы. После удовлетворения необходимости, старье можно подчистить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы