В MySQL невозможно прямо проверить, что изменение вызвал другой триггер. Однако, возможно реализовать некоторые обходные пути для достижения желаемого результата.
Один из способов - использование системной переменной OLD
в сочетании с GET DIAGNOSTICS
, чтобы проверить, было ли выполнено предыдущее изменение. Вот пример триггера, который может использоваться для этой цели:
DELIMITER $$ CREATE TRIGGER trigger1 BEFORE UPDATE ON table1 FOR EACH ROW BEGIN -- Проверяем, изменялось ли поле `column1` предыдущим триггером IF NOT (OLD.column1 <=> NEW.column1) THEN -- Ваш код здесь END IF; END$$ DELIMITER ;
В этом примере мы используем оператор <=>
, который работает как оператор сравнения =
для обработки NULL
значений.
Тем не менее, важно отметить, что использование такой логики может сделать вашу систему сложнее для поддержки и понимания. Поэтому рекомендуется аккуратно использовать подобные проверки и использовать их только в необходимых случаях.