Подтвердить что ты не робот

MySQL Trigger question: запускать только при изменении столбца?

Я не знаю, возможно ли это, но у меня есть столбец с именем active в таблице. Всякий раз, когда изменяется активный столбец, я хотел бы reset указать дату в столбце date, но ТОЛЬКО, если столбец active будет изменен.

Если другие столбцы изменены, но не столбцы active, тогда дата останется прежней.

4b9b3361

Ответ 1

что-то вроде

DELIMITER //
 CREATE TRIGGER updtrigger BEFORE UPDATE ON mytable
     FOR EACH ROW
     BEGIN
     IF NEW.active <> OLD.active THEN
     SET NEW.date = '';     
     END IF;
     END
     //

Ответ 2

Включить проблему с тестом IF в примере # 2. Когда одно из значений null, < > test возвращает значение null. Это приводит к тому, что тест не выполняется, и действие триггера не будет запущено, даже если одно значение не равно нулю. Чтобы исправить это, я придумал этот тест, который использует <= > (NULL-safe equal). Надеюсь, это поможет кому-то.

DELIMITER $$
DROP TRIGGER IF EXISTS updtrigger ;
$$
CREATE TRIGGER updtrigger  AFTER UPDATE
    ON yourTable FOR EACH ROW
BEGIN
    IF ((NEW.active <=> OLD.active) = 0)  THEN
     SET NEW.date = '';     
     END IF;
$$