Как в триггере сделать проверку, что изменение вызвал другой триггер?

В 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 значений.

Тем не менее, важно отметить, что использование такой логики может сделать вашу систему сложнее для поддержки и понимания. Поэтому рекомендуется аккуратно использовать подобные проверки и использовать их только в необходимых случаях.