И так такая проблемка. Требуется писать в некоторую таблицу данные, после того, как над другой таблицей произошли изменения (добавили запись, удалили, или обновили)
Вешаю три простых триггера (AFTER INSERT, AFTER UPDATE, AFTER DELETE), вроде этого:
CREATE TRIGGER `change_products_version_by_products_update` AFTER UPDATE ON `Product`
FOR EACH ROW BEGIN
IF NEW.productType = 1 OR NEW.productType = 2 OR NEW.productType = 3 OR NEW.productType = 5 OR OLD.productType = 1 OR OLD.productType = 2 OR OLD.productType = 3 OR OLD.productType = 5 THEN
INSERT INTO `ControlSet` SET `name` = 'Product', `pid` = 1, `method` = 'put', `referrer` = OLD.id;
END IF;
END;
Все очень просто как кирпич.
Проблема в том, что триггер на UPDATE, по какой-то причине срабатывает не во время запроса UPDATE.
Подозреваю, что дело в том, что на отношение `Product` повешен внешний ключ в другую таблицу, в которую ведется запись. И срабатывает как раз при записи в другую таблицу, с указанием id той записи, на которую срабатывает триггер. Возможно MySQL меняет какие-то внутренние данные.
Может кто-то знает, как отловить внутри триггера, что изменения происходят во взаимосвязанной таблице, а не в той, на которую триггер повешен?