У меня была похожая проблема.У меня есть таблица со столбцом tinyint с именем isDirty, и я хотел установить ее в 1 при обновлении строки и очистить ее до 0, когда строка была «очищена».
Проблема в том, что комбинацияNEW и OLD со значениями 0 и 1 не дали мне достаточно значений, чтобы решить мою проблему.Поэтому вместо этого я создал «правило», согласно которому при обновлении столбца до значения 100 ему было присвоено чистое значение «0», а все остальное - «1».Причина, по которой это работает, заключается в том, что в этом столбце будет только одно из 2 значений, 0 или 1, поэтому вы можете использовать 100 (или любое другое значение по вашему выбору) в качестве «флага», который указывает, что он чистый.
Я знаю, что звучит немного задом наперед, чтобы установить ненулевое значение, чтобы вернуться к 0, но это направление, которое я выбрал, и это работает.Вот как выглядит этот триггер:
CREATE TRIGGER calls_update BEFORE UPDATE ON `calls`
FOR EACH ROW
BEGIN
IF ( NEW.isDirty = 100 ) THEN
SET NEW.isDirty = 0;
ELSE
SET NEW.isDirty = 1;
END IF;
END
$$