есть таблица address с колонками (id int, address text). Нужно сделать так, чтобы один раз записав адрес в таблицу его уже нельзя было изменить. Нашел вариант реализации механизма через триггер: https://stackoverflow.com/questions/10168408/use-a-trigger-to-stop-an-insert-or-update — просто делаем тригер на каждый апдейт и сравниваем old и new значения и если не совпали -> signal'им
Внимание вопрос: как теперь мониторить срабатывание тригера, описанного выше? Пробовал два варианта:
1) внутри тригера пытаться писать в таблицу а-ля, address_audit, однако это не рабочий подход. Если срабатывает SIGNAL, то вся транзакция откатывается и запись в таблицу address_audit также отклоняется
2) копаться в логах mysql. Тут также не преуспел и подходящих логов не нашел. Возможно это связано с тем, что не ко всем настройкам есть доступ(используется managed-решение от Yandex https://cloud.yandex.ru/services/managed-mysql)
Есть ли у кого-то идеи, как можно реализовать сценарий? В идеале хочется автоматизировать детектирование таких апдейтов, т.е. если сработал триггер, то слать нотификацию админу в ТГ или еще куда-то
А движок MyISAM в MySQL ещё жив? Он нетранзакционный. По идее, если таблицу логов создать на нём, то при откате транзакции запись в лог не исчезнет.
https://sqlize.online/s/v6
Это ровно то, что было нужно. Просто и элегантно! Вячеслав, большое спасибо!
Обсуждают сегодня